28 июля 2014 г.

Zcopy — архивное копирование

Архивное копирование файлов.
Сохраняет несколько версий указанной папки. Сохраняются только измененные с прошлого архивирования файлы. При этом доступ к любой версии архива можно получить без специальных программ — просто как к папкам и файлам.

Зачем еще одна программа?

Есть задача — сохранение копии данных за несколько дней с возможностью возврата к любой версии.

Таких программ в общем-то много. В том числе и встроенная в Windows система архивного копирования. Есть только одна проблема: для того чтобы получить доступ к сохраненным данным, надо опять пользоваться соответствующей программой. При этом достаточно легко ошибиться с алгоритмом и походя «восстановить» старые данные на место свежих.

Можно просто копировать всю исходную папку на другой диск. Потом самую старую папку (скажем, №10) удаляем, предыдущие переименовываем (плюс 1), свежую копию сохраняем в №0. Всё прекрасно, но выплывают две проблемы:
– каждый раз процесс может оказаться ОЧЕНЬ долгим;
– каждая версия занимает столько же места, сколько исходные данные. При этом изменений может быть не так уж много.

Zcopy решает эту проблему, используя «жёсткие ссылки», функцию файловой системы NTFS. Жёсткая ссылка — запись в таблице файлов, указывающая на уже существующий файл. С точки зрения прикладных программ это такой же файл, как и все остальные. При удалении такого файла фактически удаляется только имя из таблицы файлов. И окончательно файл удаляется только после удаления ВСЕХ ссылающихся на него имен.

При копировании программа сравнивает копируемый файл с последней сохраненной копией, и, если файл не изменялся, файл не копируется. В новом архиве создаётся ссылка на имеющуюся копию. Таким образом, создаётся полная копия текущих данных, но при этом она занимает ровно столько места, сколько было изменений. Времени тоже уходит соответственно меньше. Самая поздняя версия удаляется.

Настройки архивирования можно сохранить в INI-файле и затем использовать в автоматическом режиме.

Для запуска сразу на выполнение запускать следующим образом:
zcopy.exe myconfig.zini, где myconfig.zini — ваш файл настроек, предварительно созданный и протестированный.
Для редактирования конфигурационного файла необходимо открыть его из программы, отредактировать в текстовом редакторе или с помошью следующего вызова: zcopy.exe myconfig.zini edit

Параметры:
  • AutoRename — автоматически переименовывать папки архивов и удалять самый старый.
  • CheckDestFileSystem — проверять тип файловой системы папки назначения. Если тип файловой системы не NTFS, возможно только полное копирование.
  • CompareMode — алгоритм сравнения файлов. Возможные значения:
    cmSizeAndDate — по размеру и времени последнего изменения. Самый быстрый алгоритм. В подавляющем большинстве случаев этого достаточно. Более того, если размер или время изменения файлов отличаются, остальные проверки не производятся.

    cmPartial — берутся небольшие блоки файлов из начала и конца и сравниваются байт в байт. Компромисс между скоростью и точностью в случае, когда нет доверия размеру и дате. Обычно у файлов есть какой-то заголовок, который изменяется при любом изменении файла.

    cmFull — файлы сравниваются полностью побайтно. Скорость такая же, как при полном копировании, но может экономиться место.

    cmForceCopy — никакого сравнения файлов не производится. Полное копирование.
  • ForceCopy устанавливает режим полного копирования. Аналогично установке CompareMode в значение cmForceCopy. Выведено отдельным параметром просто для наглядности.
  • DirMask — маска, по которой будут искаться, переименовываться и удаляться папки, созданные в предыдущие дни. Может быть любого вида при условии сохранения параметра %d . По умолчанию «day-%.3d». Вместо буквы d будет подставлен порядковый номер, «.3» означает дополнение слева нулями до трех символов (не обязательно). Может быть, например, такой: «архив_дня_%d_от_последнего_сохранения». (For Delphi programmers — used function format). ;)
  • FirstDir — имя папки, в которую будет осуществляться непосредственное архивирование. Если включено AutoRename, то эта папка автоматически будет переименована в папку, заданную параметром SecondDir.
  • SecondDir  папка, в которой содержится результат предыдущего архивирования. В случае автоматического переименования должна быть согласована с параметром DirMask.
  • MaxDirs — максимальное количество сохраняемых версий архивов.
  • Skip — пропускать файлы и папки с  соответствующим именем или атрибутами
  • LogLevel — уровень журналирования. Лог-файл всегда называется zcopy.log и сохраняется в папке назначения.
  • Dest — назначение. Место, куда будет производиться копирование данных. (FTP пока не поддерживается). В пути можно указывать системные переменные, обрамленные процентом. Например, можно указать D:\BKP\%USERNAME%. Тогда в зависимости от имени залогинившегося пользователя будет изменена и папка архивирования.
  • Source — источник. Может быть отдельным диском, папкой или FTP-сервером. Так же как и в параметре Dest, можно задавать системные переменные, например: %USERPROFILE%. В случае FTP-сервера путь следует задавать следующим образом: ftp://user:password@example.com Если сервер допускает анонимный вход, user:password@  можно пропустить.

    ! Системные переменные необходимо прописывать непосредственно в файле ручками (он текстовый), поскольку при попытке ввести их в интерфейсе переменные будут тут же заменены своими значениями.



Установка не требуется. Распаковать, скопировать куда больше хочется и запускать. Можно вручную сопоставить с программой расширение .ZINI
Качать отсюда: http://files.xfs.ru/zcopy.zip

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.