Tôi đang cố gắng tải xuống tệp sao lưu hàng ngày từ máy chủ của tôi đến máy chủ lưu trữ cục bộ của mình, nhưng tôi đã gặp một số sự cố.Tải xuống các tệp lớn qua FTP với python
tôi đã viết mã này (loại bỏ những phần vô dụng, như chức năng email):
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()
Và tôi chạy này với một crontab như:
40 23 * * * python /usr/bin/backup-transfer.py >> /var/log/backup-transfer.log 2>&1
Nó hoạt động với các tập tin nhỏ, nhưng với các tập tin sao lưu (khoảng 1.7Gb) nó đóng băng, tập tin tải về nhận được khoảng 1.2Gb sau đó không bao giờ lớn lên (tôi chờ đợi một ngày), và các tập tin đăng nhập là sản phẩm nào.
Bất kỳ ý tưởng nào?
p.s: im sử dụng Python 2.6.5
Để khắc phục sự cố tiếp theo, có thể bạn có thể sử dụng đối số 'callback' từ 'FTP.retrbinary' để thu thập thêm thông tin về tiến trình tải xuống. Ngoài ra, chơi với 'maxblocksize' có thể tiết lộ một số vấn đề về mạng. – jcollado