从 Linux 服务器上递归下载文件夹下所有文件
2024-06-19 15:36:37 软件 125观看
摘要本文将介绍如何使用Python从Linux服务器上递归下载文件夹下的所有文件。我们将使用paramiko库来实现SSH连接,以及os和shutil库来处理文件和目录。如果你还没有安装paramiko库,请先使用以下命令安装:pip install paramiko

本文将介绍如何使用Python从Linux服务器上递归下载文件夹下的所有文件。我们将使用paramiko库来实现SSH连接,以及os和shutil库来处理文件和目录。如果你还没有安装paramiko库,请先使用以下命令安装:SML28资讯网——每日最新资讯28at.com

pip install paramiko

SML28资讯网——每日最新资讯28at.com

1. 创建SSH连接

首先创建一个SSH连接到Linux服务器:SML28资讯网——每日最新资讯28at.com

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

2. 递归下载文件夹下的所有文件

编写一个函数来递归下载文件夹下的所有文件。这个函数将接收一个SSH客户端对象、一个远程文件夹路径和一个本地保存路径作为参数。SML28资讯网——每日最新资讯28at.com

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

3. 使用示例

整体调用这些函数来从Linux服务器上递归下载文件夹下的所有文件。假设我们的服务器地址为example.com,端口为22,用户名为user,密码为password,我们想要下载的远程文件夹为/remote/folder,并将其保存到本地的/local/folder中。SML28资讯网——每日最新资讯28at.com

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文件夹及其内容。SML28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-94844-0.html从 Linux 服务器上递归下载文件夹下所有文件

声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。

显示全文

上一篇:腾讯电商二面:Lombok 是银弹?还是陷阱?

下一篇:提高数值精度:掌握 C++ 中的 setprecision

最新热点