使用Python在FTP中压缩文件

时间:2012-01-16 21:22:36

标签: python ftp

我一直在尝试编写一个python代码,可以将ftp服务器的文件存档到一个zip文件中并下载它:

到目前为止,我知道我需要使用ftplib:

import os
from time import strftime
from ftplib import FTP

day = strftime("%d")
today = strftime("%d-%m-%Y")

link = FTP(ftphost)
link.login(passwd = ftp_pass, user = ftp_user)
link.cwd(file_path)

我认为我需要使用FTP.sendcmd函数向FTP服务器发送一个命令,让它将所有文件归档为一个,实际上我并不确定我需要发送哪个命令。

要下载该文件,该功能似乎对我来说是合法的:

import os
def download(ftp,file, localdir):
    f = open(os.path.join(localdir, file),"wb")
    ftp.retrbinary("RETR " + file,f.write)
    f.close()

有人可以把我一直想做的事情放在一起吗?

2 个答案:

答案 0 :(得分:1)

据我所知,FTP协议不提供在服务器上运行任意客户端指定的命令。亲眼看看:RFC 959

即使这样做,也是一个主要的安全问题(至少使用公共FTP服务器)。

答案 1 :(得分:1)

好的,所以我找到了我相信的解决方案。

我需要使用SSH(Secure Shell)或sFTP我认为它们的意思相同。有一个名为Paramiko的lib,它为SSH提供发送命令,连接等。似乎使用ftplib无济于事,因为您无法通过ftplib运行Shell命令。你需要一个安全的连接才能做到这一点。