Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- import os
- import sys
- import time
- import ConfigParser
- import subprocess
- import tarfile
- import zipfile
- cfg = ConfigParser.ConfigParser()
- #Existenz von "save.ini" ueberpruefen und gegebenfalls "save.ini" erstellen
- try:
- f = open('save.ini')
- except IOError:
- source_dir_number_input = raw_input('Wieviele Ordner sollen gesichert werden? [1]?: ')
- if source_dir_number_input:
- source_dir_number = int(source_dir_number_input)
- else:
- source_dir_number = 1
- source_dirs = []
- def define_source_dir():
- for i in xrange(source_dir_number):
- while True:
- source_dir = raw_input('Welchen Ordner wollen sie sichern?[? für Hilfe]: ')
- if source_dir == '?':
- print 'Diese Frage wird für die Anzahl der zu sichernden Ordner wiederholt'
- elif os.path.exists(source_dir):
- source_dirs.append(source_dir)
- break
- else:
- print 'Ordner existiert nicht, geben Sie einen existierenden Ordner an!'
- define_source_dir()
- while True:
- trg_userinput = raw_input('Zielordner: ')
- if os.path.exists(trg_userinput):
- target_dir = trg_userinput
- break
- else:
- if makedir(trg_userinput):
- target_dir = trg_userinput
- break
- else:
- print 'Ordner existiert nicht'
- while True:
- arv_input = raw_input('Welcher Archivtyp soll verwendet werden? [.tar.gz/.tar.bz2/.zip]')
- if arv_input =='.tar.gz':
- archive_tar = arv_input
- archive_zip = None
- break
- elif arv_input == '.tar.bz2':
- archive_tar = arv_input
- archive_zip = None
- break
- elif arv_input == '.zip':
- archive_zip = arv_input
- archive_tar = None
- break
- else:
- print 'Falsche Eingabe'
- while True:
- fc_userinput = raw_input('Kommentarfunktion aktivieren? [Ja/Nein]')
- if fc_userinput.upper() == 'J':
- file_comments = 'True'
- break
- elif fc_userinput.upper() == 'N':
- file_comments = 'False'
- break
- else:
- print 'Antworten Sie mit Ja oder Nein'
- cfg.add_section('Source_dirs')
- source_dir_config_name = 'source_dir'
- help_number = 0
- for each in source_dirs:
- help_number_str = str(help_number)
- source_dir_config = source_dir_config_name + '_' + \
- help_number_str.replace('*', '_')
- help_number = help_number + 1
- cfg.set('Source_dirs', source_dir_config, each)
- cfg.add_section('Orders')
- cfg.set('Orders', 'target_dir', target_dir)
- if not archive_tar == 'None':
- cfg.set('Orders', 'ARCHIVE_TAR', archive_tar)
- else:
- cfg.set('Orders','ARCHIVE_TAR', 'tar is not used')
- if not archive_zip == 'None':
- cfg.set('Orders', 'ARCHIVE_ZIP', archive_zip)
- else:
- cfg.set('Orders','ARCHIVE_ZIP', 'zip is not used')
- cfg.set('Orders','FILE_COMMENTS', file_comments)
- f_write = open('save.ini', 'w')
- cfg.write(f_write)
- f_write.close()
- else:
- f_read = open('save.ini')
- cfg.readfp(f_read)
- source_directorys = cfg.items('Source_dirs')
- source_directorys.sort()
- target_dir = cfg.get('Orders', 'target_dir')
- archive_tar = cfg.get('Orders', 'ARCHIVE_TAR')
- archive_zip = cfg.get('Orders','ARCHIVE_ZIP')
- file_comments = cfg.get('Orders', 'FILE_COMMENTS')
- f_read.close()
- #tagesdatum=verzeichnisname
- date = target_dir + time.strftime('%Y%m%d')
- #uhrzeit=archivname
- time = time.strftime('%H%M%S')
- #Anmerkung
- if file_comments == 'True':
- comment = raw_input('Geben Sie einen Kommentar ein: ')
- if not comment:
- ziel = os.path.join(date, time)
- else:
- comment_suffix = '_' + comment
- ziel = os.path.join(date, time + comment_suffix)
- else:
- ziel = date + os.sep + time
- #erzeuge unterverzeichnis(datum), falls nicht vorhanden
- if not os.path.exists(date):
- os.mkdir(date)
- #packbefehl funktion
- def compress(source_directorys, trg_file, compress_command):
- if compress_command == '.zip':
- try:
- zf = zipfile.ZipFile(trg_file, 'w')
- print 'Diese Dateien werden gesichert,'
- for option, value in source_directorys:
- print 'aus ', value,':'
- for i in os.listdir(value):
- print i
- zf.write(value + i)
- zf.close()
- except 'TarError':
- print 'Fehler beim sichern!'
- sys.exit()
- else:
- try:
- tf = tarfile.open(trg_file, compress_command)
- print 'Diese Dateien werden gesichert,'
- for option, value in source_directorys:
- print 'aus', value,':'
- for i in os.listdir(value):
- print i
- tf.add(value)
- tf.close()
- except 'TarError':
- print 'Fehler beim sichern!'
- sys.exit()
- #packbefehl ausführen
- if archive_zip == '.zip':
- trg_file = ziel + archive_zip
- compress_command = '.zip'
- compress(source_directorys, trg_file, compress_command)
- else:
- trg_file = ziel + archive_tar
- if archive_tar == '.tar.gz':
- compress_command = 'w:gz'
- compress(source_directorys, trg_file, compress_command)
- elif archive_tar == '.tar.bz2':
- compress_command = 'w:bz2'
- compress(source_directorys, trg_file, compress_command)
- print 'Sicherung erfolgreich'
- print 'Sicherung ist:', trg_file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement