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. condition = True
  11.  
  12. # Путь к директории, где хранятся бэкапы
  13. target_dir = '/home/user/media/Python'
  14.  
  15. # Именем для архива служит текущая дата и время.
  16. today = target_dir + os.sep + time.strftime('%Y%m%d')
  17. # Текущее время служит именем архива
  18. now = time.strftime('%H%M%S')
  19.  
  20. # Определение функции для создания архива с помощью tar
  21. def make_tarfile(output_filename, source_dir):
  22. with tarfile.open(output_filename, "w:gz") as tar:
  23. for i in source_dir:
  24. tar.add(i, arcname=os.path.basename(i))
  25.  
  26. # Проверка правильности путей в аргументах
  27. for i in source:
  28. if not os.path.exists(i):
  29. sys.exit('Error: Some argument is not found')
  30. else:
  31. pass
  32.  
  33. # Выполнение функции
  34. # Проверка на пустой список
  35. if not source:
  36. print('Список директорий пуст.')
  37. else:
  38. # Запрос комментария пользователя для имени файла
  39. comment = input('Введите комментарий: ')
  40. if len(comment) == 0:
  41. target = today + os.sep + now + '.tar.gz'
  42. else:
  43. target = today + os.sep + now + '_' + \
  44. comment.replace(' ', '_') + '.tar.gz'
  45. # Создание каталога, если его еще нет
  46. if not os.path.exists(today):
  47. os.mkdir(today)
  48. print('Каталог {} успешно создан.'.format(today))
  49. # Вызов функции
  50. make_tarfile(target, source)
  51. print('Резервная копия успешно создана в', target)
Success #stdin #stdout 0.03s 45152KB
stdin
Standard input is empty
stdout
Список директорий пуст.