Бэкап за каждую дату - выглядит просто как папка. Для того, чтобы не хранить терабайт в каждой папке по много раз при создании нового бэкапа создаются хардлинки в предыдущий бэкап. Старые папки можно смело стирать.
Для того, чтобы быстро считать md5 от файлов - в директорию сохраняется файл с посчитаными md5 и timestamps/size. Если timestamp/size файла не изменился, то верим что md5 тоже не поменялся.
Скрипт работает под Linux и Windows (под Windows даже есть оптимизированый os.walk через FindFirstFile).
Возможно, можно разобрать на запчасти для быстрого копирования директорий в production.
Cам скрипт: dobro_backup.py
Дублирую сюда usage и todoшки-недоделки:
Usage: python "prog_name" destination_dir path1/source1 ... pathN/sourceN'
Copied result will be in the destination_dir/DATE_TIME/source1 ... destination_dir/DATE_TIME/sourceN'
Also there will be created files pathN/sourceN/hash_dir_info.txt (write access to source is needed now)'
When backup is complete, destination_dir/DATE_TIME/backup.complet
Hardlinks of duplicated files created to previous directory, to save space/time.
Deletion of old backup directories is safe.
Encryption and compression can be provided by the file-system (TrueCrypt + NTFS, for example).
Hardlinks to older-than-last backups are not created now (you may manually move/copy older files to last backup)
# known missing features and issues:
#
# todo: allow to create hardlinks to old backups, to handle changed source set
# ( ["music", "documents", "video"] -> ["music", "documents"] -> ["music", "documents", "video"] ).
# todo: needless rehashes of internal file hash_dir_info.txt
# todo: catch "source inside destination" errors and vice-versa
# todo: allow to rename sources targets
# todo: allow to store hash_dir_info.txt outside source directories
# todo: allow exclude dirs/mask
# todo: don't spam about known unreadable dirs ( Microsoft\Windows\WER\ReportQueue )
updated: похожие проекты:
https://github.com/candera/hobocopy/ , для Windows. Поддерживает Volume Shadow Copy. Но его инкрементальному бэкапу я бы файлы не доверил, он работает как "скопировать файлы, таймстемпы которых старше последней даты бэкапа". Что может фейлится кучей разных способов, и можно считать что не работает для больших коллекций файлов.
Никакой дедубликации в приёмнике, просто копирование. Ключевое отличие от остального - использование Shadow Volume для заблокированых файлов, соответственно можно бэкапить Outlook (но не Thunderbird).
https://code.google.com/p/boar/ - простая система контроля версий бинарных файлов. Репозиторий - можно считать, что промежуточные снэпшоты оттуда удалять нельзя, и имеет непрозрачный формат (хрен вытащишь свою коллекцию mp3-шек без клиента boar).
Моё основное отличие от других систем - это то, что destination-репозиторий выглядит просто как директория с файлами. Фундаментальный недостаток - для каждого файла создаётся по линку, и скорость бэкапа завязано на это. Нулевой бэкап в новый чистое место - работает быстрее board на десятки процентов.