Estoy tratando de descargar diariamente un archivo de copia de seguridad de mi servidor a mi servidor de almacenamiento local, pero tengo algunos problemas.Descargar archivos grandes a través de FTP con python
escribí este código (eliminado las partes inútiles, ya que la función de correo electrónico):
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()
y corro esto con un crontab como:
40 23 * * * python /usr/bin/backup-transfer.py >> /var/log/backup-transfer.log 2>&1
Funciona con archivos pequeños, pero con los archivos de respaldo (aproximadamente 1.7Gb) se congela, el archivo descargado obtiene aproximadamente 1.2Gb y luego nunca crece (esperé alrededor de un día), y el archivo de registro está vacío.
¿Alguna idea?
p.s: im usando Python 2.6.5
Para seguir solucionando el problema, quizás pueda utilizar el argumento 'callback' de' FTP.retrbinary' para recopilar más información sobre el progreso de la descarga. Además, jugar con 'maxblocksize' podría revelar algún problema de red. – jcollado