fork download
  1. #!/usr/bin/env python3
  2. import sys
  3. import os
  4. import time
  5. import tarfile
  6.  
  7. # Файлы и каталоги, которые необходимо скопировать, собираются в список.
  8. source = []
  9. source.extend(sys.argv[1:])
  10.  
  11. # Резервные копии должны храниться в основном каталоге резерва
  12. target_dir = '/home/user/media/Python'
  13.  
  14. # Именем для архива служит текущая дата и время.
  15. today = target_dir + os.sep + time.strftime('%Y%m%d')
  16. # Текущее время служит именем архива
  17. now = time.strftime('%H%M%S')
  18.  
  19. # Определение функции для создания архива с помощью tar
  20. def make_tarfile(output_filename, source_dir):
  21. with tarfile.open(output_filename, "w:gz") as tar:
  22. for i in source_dir:
  23. tar.add(i, arcname=os.path.basename(i))
  24.  
  25. # Выполнение функции
  26. if not source:
  27. print('Список директорий пуст.')
  28. else:
  29. # Запрос комментария пользователя для имени файла
  30. comment = input('Введите комментарий: ')
  31. if len(comment) == 0:
  32. target = today + os.sep + now + '.tar.gz'
  33. else:
  34. target = today + os.sep + now + '_' + \
  35. comment.replace(' ', '_') + '.tar.gz'
  36. # Создаем каталог, если его еще нет
  37. if not os.path.exists(today):
  38. os.mkdir(today) # создание каталога
  39. print('Каталог {} успешно создан.'.format(today))
  40. try:
  41. make_tarfile(target, source)
  42. print('Резервная копия успешно создана в', target)
  43. except FileNotFoundError:
  44. print('Создание резевной копии не удалось: File Not Found')
Success #stdin #stdout 0.02s 45104KB
stdin
Standard input is empty
stdout
Список директорий пуст.