Advertisement
Guest User

Untitled

a guest
May 2nd, 2008
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.15 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import sys
  5. import time
  6. import ConfigParser
  7. import subprocess
  8. import tarfile
  9. import zipfile
  10.  
  11. cfg = ConfigParser.ConfigParser()
  12.  
  13. #Existenz von "save.ini" ueberpruefen und gegebenfalls "save.ini" erstellen
  14. try:
  15.     f = open('save.ini')
  16. except IOError:
  17.     source_dir_number_input = raw_input('Wieviele Ordner sollen gesichert werden? [1]?: ')
  18.     if source_dir_number_input:
  19.         source_dir_number = int(source_dir_number_input)
  20.     else:
  21.         source_dir_number = 1
  22.  
  23.     source_dirs = []
  24.     def define_source_dir():
  25.         for i in xrange(source_dir_number):
  26.             while True:
  27.                 source_dir = raw_input('Welchen Ordner wollen sie sichern?[? für Hilfe]: ')
  28.                 if source_dir == '?':
  29.                     print 'Diese Frage wird für die Anzahl der zu sichernden Ordner wiederholt'
  30.                 elif os.path.exists(source_dir):
  31.                     source_dirs.append(source_dir)
  32.                     break
  33.                 else:
  34.                     print 'Ordner existiert nicht, geben Sie einen existierenden Ordner an!'
  35.  
  36.     define_source_dir()
  37.    
  38.     while True:
  39.         trg_userinput = raw_input('Zielordner: ')
  40.             if os.path.exists(trg_userinput):
  41.             target_dir = trg_userinput
  42.                 break
  43.             else:
  44.             if makedir(trg_userinput):
  45.                 target_dir = trg_userinput
  46.                 break
  47.                 else:
  48.                 print 'Ordner existiert nicht'        
  49.  
  50.     while True:
  51.         arv_input = raw_input('Welcher Archivtyp soll verwendet werden? [.tar.gz/.tar.bz2/.zip]')
  52.             if arv_input =='.tar.gz':
  53.             archive_tar = arv_input
  54.                 archive_zip = None
  55.                 break
  56.             elif arv_input == '.tar.bz2':
  57.             archive_tar = arv_input
  58.                 archive_zip = None
  59.                 break
  60.             elif arv_input == '.zip':
  61.                 archive_zip = arv_input
  62.                 archive_tar = None
  63.                 break
  64.             else:
  65.                 print 'Falsche Eingabe'
  66.                
  67.     while True:
  68.         fc_userinput = raw_input('Kommentarfunktion aktivieren? [Ja/Nein]')
  69.         if fc_userinput.upper() == 'J':
  70.             file_comments = 'True'
  71.             break
  72.             elif fc_userinput.upper() == 'N':
  73.                 file_comments = 'False'
  74.                 break
  75.             else:
  76.                 print 'Antworten Sie mit Ja oder Nein'
  77.            
  78.     cfg.add_section('Source_dirs')
  79.     source_dir_config_name = 'source_dir'
  80.     help_number = 0
  81.     for each in source_dirs:
  82.         help_number_str = str(help_number)
  83.         source_dir_config = source_dir_config_name + '_' + \
  84.                 help_number_str.replace('*', '_')
  85.         help_number = help_number + 1
  86.         cfg.set('Source_dirs', source_dir_config, each)
  87.     cfg.add_section('Orders')
  88.     cfg.set('Orders', 'target_dir', target_dir)
  89.     if not archive_tar == 'None':
  90.         cfg.set('Orders', 'ARCHIVE_TAR', archive_tar)
  91.     else:
  92.             cfg.set('Orders','ARCHIVE_TAR', 'tar is not used')
  93.     if not archive_zip == 'None':
  94.             cfg.set('Orders', 'ARCHIVE_ZIP', archive_zip)
  95.     else:
  96.             cfg.set('Orders','ARCHIVE_ZIP', 'zip is not used')
  97.  
  98.     cfg.set('Orders','FILE_COMMENTS', file_comments)
  99.     f_write = open('save.ini', 'w')
  100.     cfg.write(f_write)
  101.     f_write.close()
  102. else:
  103.     f_read = open('save.ini')
  104.     cfg.readfp(f_read)
  105.     source_directorys = cfg.items('Source_dirs')
  106.     source_directorys.sort()
  107.     target_dir = cfg.get('Orders', 'target_dir')
  108.     archive_tar = cfg.get('Orders', 'ARCHIVE_TAR')
  109.     archive_zip = cfg.get('Orders','ARCHIVE_ZIP')
  110.     file_comments = cfg.get('Orders', 'FILE_COMMENTS')
  111.     f_read.close()
  112.  
  113. #tagesdatum=verzeichnisname
  114. date = target_dir + time.strftime('%Y%m%d')
  115. #uhrzeit=archivname
  116. time = time.strftime('%H%M%S')
  117.  
  118. #Anmerkung
  119. if file_comments == 'True':
  120.     comment = raw_input('Geben Sie einen Kommentar ein: ')
  121.     if not comment:
  122.         ziel = os.path.join(date, time)
  123.     else:
  124.             comment_suffix = '_' + comment
  125.             ziel = os.path.join(date, time + comment_suffix)
  126. else:
  127.     ziel = date + os.sep + time
  128.  
  129. #erzeuge unterverzeichnis(datum), falls nicht vorhanden
  130. if not os.path.exists(date):
  131.     os.mkdir(date)
  132.    
  133. #packbefehl funktion
  134. def compress(source_directorys, trg_file, compress_command):
  135.     if compress_command == '.zip':
  136.         try:
  137.             zf = zipfile.ZipFile(trg_file, 'w')
  138.                 print 'Diese Dateien werden gesichert,'
  139.             for option, value in source_directorys:
  140.                 print 'aus ', value,':'        
  141.                 for i in os.listdir(value):
  142.                     print i
  143.                     zf.write(value + i)
  144.                 zf.close()
  145.             except 'TarError':
  146.             print 'Fehler beim sichern!'
  147.             sys.exit()
  148.     else:
  149.         try:
  150.             tf = tarfile.open(trg_file, compress_command)
  151.                 print 'Diese Dateien werden gesichert,'
  152.             for option, value in source_directorys:
  153.                 print 'aus', value,':'
  154.                 for i in os.listdir(value):
  155.                     print i
  156.                     tf.add(value)
  157.                 tf.close()
  158.             except 'TarError':
  159.             print 'Fehler beim sichern!'
  160.             sys.exit()
  161. #packbefehl ausführen
  162. if archive_zip == '.zip':
  163.     trg_file = ziel + archive_zip
  164.         compress_command = '.zip'
  165.         compress(source_directorys, trg_file, compress_command)
  166. else:
  167.     trg_file = ziel + archive_tar
  168.     if archive_tar == '.tar.gz':
  169.         compress_command = 'w:gz'
  170.             compress(source_directorys, trg_file, compress_command)
  171.     elif archive_tar == '.tar.bz2':
  172.             compress_command = 'w:bz2'
  173.             compress(source_directorys, trg_file, compress_command)
  174.  
  175. print 'Sicherung erfolgreich'
  176. print 'Sicherung ist:', trg_file
  177.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement