7.11.06

Python: Backup de una carpeta contra un servidor FTP remoto

Sin lugar a dudas para cosas serias se debe utilizar rsync pero cuando tienes un equipo poco accesible y necesitas mover los ficheros de un directorio a un servidor FTP, esta porción de código puede resultar útil:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import glob
import os
import string
from ftplib import FTP

#Path donde se encuentran los ficheros

rutaFicheiros = ?/home/jose/Documentos/*?

#Parametros de la conexion
ipServFTP = ?194.224.52.4?
ftpUser = ?jose?
ftpPasswd = ?mypasswdRocks?
ftpDir = ?/Backups/Documentos?

def atopaFicheiros(ruta):
?'?
Lista todos los ficheros de una ruta dada y devuelve
una lista con todos los paths absolutos.
?'?
listadoPaths = []
if len(ruta) > 0:
listadoPaths = glob.glob(ruta)
else:
pass
return listadoPaths

def subeFicheirosFTP(ip,usuario,passwd,directorio,ficheiros):
?'?
Sube un listado de ficheros dado a un directorio de un
servidor ftp remoto.
?'?
print ?Estableciendo conexion??
conexion = FTP(ip)
conexion.login(usuario,passwd)
conexion.cwd(directorio)
print ?Subiendo ficheiros??

for i in ficheiros:
try:
ficheiroLocal = open(i,?rb?)
nomeFicheiro = string.split(i,?/')[1:]
conexion.storbinary(?STOR ? + nomeFicheiro, ficheiroLocal, 1024)
ficheiroLocal.close()
pipe = os.popen(?rm ?? + i +???)
except:
print ?Non se puido subi-lo arquivo ? + i
conexion.close()
conexion = FTP(ip)
conexion.login(usuario,passwd)
conexion.cwd(directorio)
print ?Conexion re-establecida?

conexion.close()

if __name__ == ?__main__?:
listaXmls = atopaFicheiros(rutaFicheirosXML)
subeFicheirosFTP(ipServFTP,ftpUser,ftpPasswd,ftpDir,listaXmls)

No hay comentarios: