Заархивируйте папку с помощью SSH: примеры командной строки и Python

Под «Zip-папкой SSH» подразумевается процесс сжатия папки в zip-файл с использованием протокола SSH (Secure Shell). Ниже приведены несколько методов с примерами кода для достижения этой цели:

Метод 1: использование команды zip
Вы можете использовать инструмент командной строки zip, доступный в большинстве Unix-подобных систем, для сжатия папки в zip-архив. файл через SSH. Вот пример команды:

zip -r folder.zip /path/to/folder

Эта команда сожмет «папку», расположенную по адресу «/path/to/folder», в zip-файл с именем «folder.zip».

Метод 2: использование команд tarи ssh.
Другой подход — использовать команду tarдля создания архива архива папку, а затем используйте команду ssh, чтобы перенести ее на удаленный сервер. Вот пример:

tar czf - /path/to/folder | ssh user@remote 'cat > folder.tar.gz'

Эта команда создаст сжатый архив «папки» и передаст его на удаленный сервер через SSH. Архив будет сохранен как «folder.tar.gz» на удаленном сервере.

Метод 3: использование Python и библиотеки Paramiko
Если вы предпочитаете программный подход с использованием Python, вы можете использовать библиотеку Paramiko, которая позволяет выполнять операции SSH. Вот пример:

import paramiko
import zipfile
# SSH connection details
hostname = 'remote_host'
username = 'ssh_username'
password = 'ssh_password'
# Local folder path
local_folder = '/path/to/folder'
# Remote folder path
remote_folder = '/path/to/remote/folder'
# Establish SSH connection
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname, username=username, password=password)
# Create a zip file
zip_name = 'folder.zip'
zip_path = f'{local_folder}/{zip_name}'
with zipfile.ZipFile(zip_path, 'w') as zipf:
    for root, dirs, files in os.walk(local_folder):
        for file in files:
            file_path = os.path.join(root, file)
            zipf.write(file_path, os.path.relpath(file_path, local_folder))
# Transfer the zip file to remote server
sftp = ssh.open_sftp()
sftp.put(zip_path, f'{remote_folder}/{zip_name}')
# Close connections
sftp.close()
ssh.close()

В этом примере мы устанавливаем SSH-соединение, создаем zip-файл папки с помощью модуля zipfile, а затем передаем zip-файл на удаленный сервер с помощью функции SFTP Paramiko.