我試圖從我的服務器每天下載一個備份文件到我的本地存儲服務器,但我有一些問題。通過python下載大文件
我寫了這個代碼(去除無用的部分,如電子郵件功能):
import os
from time import strftime
from ftplib import FTP
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
day = strftime("%d")
today = strftime("%d-%m-%Y")
link = FTP(ftphost)
link.login(passwd = ftp_pass, user = ftp_user)
link.cwd(file_path)
link.retrbinary('RETR ' + file_name, open('/var/backups/backup-%s.tgz' % today, 'wb').write)
link.delete(file_name) #delete the file from online server
link.close()
mail(user_mail, "Download database %s" % today, "Database sucessfully downloaded: %s" % file_name)
exit()
和我一起像一個crontab運行此:
40 23 * * * python /usr/bin/backup-transfer.py >> /var/log/backup-transfer.log 2>&1
它適用於小文件,但與備份文件(約1.7Gb)凍結,下載的文件約1.2Gb,然後永遠不會成長(我等了一天),日誌文件是空的。
有什麼想法?
p.s:im使用Python 2.6.5
爲了進一步解決問題,也許你可以使用'FTP.retrbinary'中的'callback'參數來收集更多關於下載進度的信息。另外,使用'maxblocksize'可能會發現一些網絡問題。 – jcollado