本文将介绍如何使用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.28at.com/showinfo-26-94844-0.html从 Linux 服务器上递归下载文件夹下所有文件
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com