Metainformationen zur Seite
Backup von FTP mit python
Datum: 04.07.2019 Quelle: https://talhasariyuerek.com/python-ftp-backup-script/
#!/usr/bin/python3 #ToDo Ordner zippen #################################################### hostname = '' username = '' password = '' start_directory = '/bin/' #Bin damit Datein kleiner backup_dir = './' #################################################### import ftplib import os import datetime import backupdir def get_files_directories(): dirlisting = [] ftp_obj.retrlines('LIST',callback=dirlisting.append) files = [] directories = [] for l in dirlisting: lastspace = l.rindex(' ') file_name = l[lastspace+1:] if l[0] == 'd' and file_name != '.' and file_name != '..': directories.append(file_name) elif l[0] == '-': files.append(file_name) return files,directories def backup_directory(local_dir,remote_dir): #Ins Backup Verzeichnis wechseln os.chdir(local_dir) try: ftp_obj.cwd(remote_dir) print('In directory '+remote_dir) files,directories = get_files_directories() for f in files: print('Backing up '+f) try: ftp_obj.retrbinary('RETR '+f, open(f, 'wb').write) except ftplib.error_perm: print('Skipping '+f+' due to permissions') for d in directories: newremote = remote_dir+d+'/' newlocal = local_dir+'/'+d os.mkdir(newlocal) print(newlocal) backup_directory(newlocal,newremote) except: print('Skipping '+remote_dir+' due to permissions!!!!!') os.chdir(backup_dir) #Ins Verzeichnis Wechseln datestring = str(datetime.date.today()) # Datum String anlegen os.mkdir(datestring) # Ordner mit Datum erstellen os.chdir(datestring)# in den Datumsordner wechseln #FTP Objekt erstellen ftp_obj = ftplib.FTP(host=hostname, user=username, passwd=password) local_dir = os.getcwd() #Variable mit absolutem Pfad erstellen remote_dir = start_directory# Pfad auf dem Webserver backup_directory(local_dir,remote_dir) ftp_obj.quit() #Datei zippen backupdir.backupDir2Zip(local_dir, datestring)
#!/usr/bin/python3 import os import zipfile def backupDir2Zip(folder, zipname): #Eine Ebene tiefer für relpath os.chdir(folder) os.chdir("..") folder = os.path.relpath(folder) zipFilename = zipname + ".zip" print("Erstelle Zip Datei: " + zipFilename) backupfile=zipfile.ZipFile(zipFilename, "w", zipfile.ZIP_DEFLATED) #Ordner rekursiv durchgehe for ordner, unterordner, dateien in os.walk(folder): backupfile.write(ordner) for datei in dateien: backupfile.write(os.path.join(ordner, datei)) backupfile.close if __name__ == '__main__': backupDir2Zip("/home/user/Files/Proggen/python-space/pyBakFTP/2019-07-06/", "test")