本文將介紹如何使用Python從Linux服務器上遞歸下載文件夾下的所有文件。我們將使用paramiko庫來實現SSH連接,以及os和shutil庫來處理文件和目錄。如果你還沒有安裝paramiko庫,請先使用以下命令安裝:
pip install paramiko
首先創建一個SSH連接到Linux服務器:
import paramikodef create_ssh_client(hostname, port, username, password): client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname, port, username, password) return client
編寫一個函數來遞歸下載文件夾下的所有文件。這個函數將接收一個SSH客戶端對象、一個遠程文件夾路徑和一個本地保存路徑作為參數。
import osimport shutildef download_folder(ssh_client, remote_folder, local_folder): # 在遠程服務器上創建本地文件夾(如果不存在) sftp = ssh_client.open_sftp() sftp.mkdir(local_folder) if not os.path.exists(local_folder) else None sftp.close() # 在遠程服務器上獲取文件夾列表 stdout, _ = ssh_client.exec_command(f"ls -lR {remote_folder}") folder_list = [line.split()[-1] for line in stdout.readlines()] # 遍歷文件夾列表并遞歸下載每個文件 for file in folder_list: remote_file = f"{remote_folder}/{file}" local_file = f"{local_folder}/{file}" sftp.get(remote_file, local_file) if os.path.isfile(remote_file) else None download_folder(ssh_client, remote_file, local_file) if os.path.isdir(remote_file) else None
整體調用這些函數來從Linux服務器上遞歸下載文件夾下的所有文件。假設我們的服務器地址為example.com,端口為22,用戶名為user,密碼為password,我們想要下載的遠程文件夾為/remote/folder,并將其保存到本地的/local/folder中。
if __name__ == "__main__": hostname = "example.com" port = 22 username = "user" password = "password" remote_folder = "/remote/folder" local_folder = "/local/folder" ssh_client = create_ssh_client(hostname, port, username, password) download_folder(ssh_client, remote_folder, local_folder)
運行上述代碼后,在本地的/local/folder中可以看到遠程服務器上的/remote/folder文件夾及其內容。
本文鏈接:http://www.tebozhan.com/showinfo-26-94844-0.html從 Linux 服務器上遞歸下載文件夾下所有文件
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com