Сайт вебмастера

Использование 7-Zip для бэкапа

14-11-2020Reading time ~ 3 min.Софт 7223

Раньше я делал бэкапы с помощью RoboCopy. С ним всё замечательно кроме одного — размер бэкапа получается достаточно большим. Это особо заметно на текстовых файлах, когда даже простое zip-сжатие позволяет уменьшить занимаемое место в несколько раз.

Другая проблема — в бэкапе может оказаться очень много файлов, скажем несколько тысяч. В итоге, когда такой бэкап нужно куда-то ещё скопировать (даже в «облако») передача каждого файла занимает много времени. Тогда я и задумался: может применить какой-то архиватор, чтобы он сжимал все файлы в один. Его и передать можно быстро и хранить проще.

Выбор пал на 7-Zip. Это бесплатно, хорошее сжатие, но главное, что у него есть все необходимые опции.

Самое важно, что 7-Zip позволяет обновлять файлы в архиве. То есть архиватор сравнивает новые файлы с тем, что есть в архиве и заменяет их на новые. Это существенно сокращает время.

Работа по созданию бэкапа организуется через параметры командной строки. После установки 7-Zip, в нём будет доступен файл справки 7-zip.chm, где можно посмотреть варианты использования. К сожалению русского и украинского языков нет на официальном сайте, а все сторонние содержат лишь неполные описания.

Поэтому я приведу сразу готовые примеры, чтобы было понятно как их использовать.

Типовой вариант (можно разместить код в bat-файле):

"c:\Program Files\7-zip\7z.exe" u -ssw -mx1 -uq0 -r "t:\backups\doc.7z" "D:\doc\*"

Сам 7-Zip запускается с полным именем. Все пути указываются в кавычках (так принято в Windows). Дальше идут ключи. После указывается файл архива и в конце — каталог-источник.

В данном случае будет использоваться каталог D:\doc\ со всем файлами, а результат помещён в t:\backups\doc.7z.

Здесь важный момент. Имя исходного каталога лучше сделать английским, то есть без русских символов. Проблема здесь в кодировке Windows и MSDos, поэтому, чтобы не было сюрпризов, лучше каталог сделать английским. А вот подкаталоги могут быть уже любыми.

Рассмотрим ключи.

  • u — указывает на режим работы — обновление в архиве. Если его нет, то он будет создан.
  • -uq0 — это режим обновления. Когда файл есть в архиве, но нет на диске, то файл будет проигнорирован. Есть ещё другие режимы, но для бэкапа этот в самый раз.
  • -ssw — работать с файлами, даже если они используются. Это позволяет делать бэкап, когда вы работаете с файлом — проблем не будет.
  • -mx1 — степень сжатия файла. 0 — без сжатия, 9 - максимально. Чем меньше сжатие, тем быстрее работает архиватор. Если размер архива небольшой, то сжатие можно увеличить.
  • -r — рекурсивное добавление каталогов. То есть добавлять все подкаталоги исходного.

Если вы выкладываете архив в Сеть, то его лучше запаролить.

"c:\Program Files\7-zip\7z.exe" u -ssw -mx1 -uq0 -r -pPASSWORD -mhe=on "t:\backups\secret.7z" "D:\secret\*"

Для пароля указывается ключ -p после которого сразу же идёт пароль (в этом примере «PASSWORD»). При открытии архива потребуется его ввести. Лучше, конечно указывать его английскими символами.

Ключ -mhe=on служит для шифрования «заголовков» самого архива. Это не позволит увидеть список его файлов без пароля.

Часто встречается задача, когда нужно сделать архив, но оставить старый. В этом случае лучше всего указать текущую дату в имени архива.

"c:\Program Files\7-zip\7z.exe" u -ssw -mx1 -uq0 -r "t:\backups\%DATE%-doc.7z" "D:\doc\*"

Здесь в имени файла указывается %DATE%, которая автоматом заменится на текущую дату: 13.11.2020-doc.7z. Строго говоря это уже не относится к 7z, а является стандартной возможностью командной строки Windows.

Дальше. Если нужно сделать бэкап, но исключить из него какой-то каталог. Например так я архивирую все локальные домены за исключением localhost (он отдельно архивируется).

"c:\Program Files\7-zip\7z.exe" u -ssw -mx1 -uq0 -r -xr!localhost "T:\backups\domains-no-localhost.7z" "D:\domains\*"

За это отвечает ключ -xr (исключение с «рекурсивностью»).

Ну и пара советов как лучше организовать хранилище.

  • По возможности отделяйте свои файлы от программ. Потому что программы всегда можно заново установить, а данные ценны сами по себе.
  • Если файлы архивов получаются достаточно большие, то лучше разделить исходный каталог на несколько и архивировать их по отдельности.
  • В одном bat-файле можно размещать несколько 7z-команд, то есть один клик и будет создано несколько архивов.
Related Posts