понедельник, 1 июня 2015 г.

Дифференциальный архив 7z для бекапа

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

Дифференциальный архив позволят уменьшить и объем данных для резервного копирования, и дисковое пространство для хранения копий, и время на создания копии, и время на передачу на удаленный компьютер.

Суть его заключается в том, чтобы создать изначальный архив, а потом делать резервные копии только изменений. Например, в пятницу вечером создали архив backup_week_001.7z  с рабочими документами (файлы 1.txt 2.doc). В течение понедельника в каталоге с рабочими документами отредактировали файл 2.doc, добавили 3.xls, а также удалили файл 1.txt), то при создании дифференциального архива, например, backup_daily_20150602.7z (по приведенному мною ниже примеру) в него попадет измененный файл 2.doc, новый файл 3.xls. Файл 1.txt добавлен не будет, он ведь удалён :) При этом исходный архив backup_week_001.7z не будет изменен. Т.е. удаленный файл 1.txt и исходный файл 2.doc можно будет восстановить из архива.

Развить мысль под свои нужды, думаю, может каждый. Можно хранить постоянно недельную копию и 6 дифференциальных архивов. Можно хранить только недельные копии. Можно хранить исходный архив и все дифференциальные, чтобы восстановить изменения в данных на любую дату.

А вот и команда для создания архива :)

 7zr u arch.7z -u- -up0q0r2x2y2z0w2'!'"`date +%Y-%m-%d`".7z /home/user/PDF/* -ms=off

поясню:

  • 7zr - консольная программа-архиватор (в Ubuntu 7zr, в AltLinux просто 7z, по крайней мере у меня)
  • u - команда обновления архива
  • arch.7z - исходный архив
  • -u- - создать архив, а не обновлять (не трогать) исходный
  • -up0q0r2x2y2z0w2'!'"`date +%Y-%m-%d`".7z - настройки для отбора файлов (подробнее  смотрите справку по архиватору http://gora.7zsfx.info/7-ziphelpru/  на русском языке про команду update), а также автоподстановка текущей даты в имя создаваемого архива.
  • /home/user/PDF/* - каталог с рабочими документами, которые необходимо заархивировать.
  • -ms=off - не создавать непрерывный архив

Удачных бекапов!