如何将文件从 FTP 服务器复制到另一个 FTP 服务器(独立于平台)

How to copy file from FTP server to another FTP server (platform independently)

我制作了一个脚本,可以将文件从本地计算机复制到 FTP 服务器。我引用此 link 来制作脚本 Upload folders from local system to FTP using Python script,但现在我想使用 Python 脚本将文件从 FTP 复制到不同位置的另一台远程 FTP 机器。如何做到这一点?

文件复制可以使用 rsync 命令完成,但我想使用 Python 脚本来完成。

代码:

import ftplib
import os

server = 'host'
username = 'name'
password = 'pass'
ftp = ftplib.FTP(server, username, password)
Path = 'path'#source
val = "/des/"#destination

def copy(source,destination):
     print(source)
     print(destination)
     os.chdir(source)
     ftp.cwd(destination)
     if "C:\" in Path or "c:\" in Path:
        ftp_path = (source).split("\")[-1]
     else:
        ftp_path = (source).split("/")[-1]
     directory = destination+ftp_path
     mkdir(directory)
     ftp.cwd(directory)
     read = os.listdir(source)
     for file in read:
         print(file) 
         if "C:\" in Path or "c:\" in Path:
            Type = source + "\" + file
         else:
            Type = source + "/" + file
         print(Type)
         print()
         if os.path.isdir(Type):#If Type is Folder then it will create new 
folder
             copy(Type,directory+"/")
         elif os.path.isfile(Type):#If Type is file then it will create file
             print(Type) 
             current_dir = ftp.pwd() + "/"
             f = Type
             fh = open(f, 'rb')
             ftp.storbinary('STOR %s' % current_dir + file, fh)
             fh.close()

def mkdir(path):
    #print(path)
    ftp.mkd(path)
copy(Path,val)



ftp.close()

一般来说,如果 FTP 协议是您访问机器的唯一方式,您不能将文件从一个远程 FTP 服务器传输到另一个远程 FTP 服务器。 =11=]

FXP protocol 允许这样做,但大多数 FTP 服务器通常不允许这样做。

如果你有另一个访问其中一个服务器的权限,比如 SSH,你当然可以自动登录到服务器,然后 运行 FTP 客户端,到 upload/download to/from 其他服务器。