Используем архиватор 7zip для бэкапа данных

Суббота, 26 Дек 2009 4:06

Для того чтобы наступло счастье в плане бэкапов инфы на моём сервере, я решил раз и навсегда отказаться от Acronis True Image в пользу бэкапа данных с помощью архиватора 7-Zip.

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

7za.exe a -tzip -ssw -mx7 -r0 -x@exclusions.txt full_path_for_the_archive working_dir

Рассмотрим используемые ключи в нашей команде:

  • -tzip тип архива zip, без этого ключа тип по умолчанию 7z;
  • -ssw принудительная архивация файлов, открытые в данный момент для записи, использование теневого копирования файлов;
  • -mx7 степень сжатия, используем максимальную степень (степень сжатия сильно влияет на скорость архивации);
  • -r0 исключения, будут прописаны дальше, обрабатывать только в текущей папке;
  • -x@exclusions.txt файл со списком исключений, файлы которые архивировать не будем. Cтрока файла — одно исключение. Разрешается использовать маски (Пример: *.ext). Если исключений не много то можно использовать такую запись прямо в консоле: -x!*.ext;
  • full_path_archive полное имя создаваемого архива;
  • work_dir директорию которую будем запаковывать.

Для удобства хорошо бы использовать %date% в имени архива.

Так как нам нужно архивировать разные директории в разные архивы, размерами по 10-15 гигобайт, имеет смысл применить последовательность команд, чтоб не создавать много заданий в планировщике задач и не заботися о том сколько времени будет потрачено на весь процесс. Поэтому для данных целей я использую объединение команд используя &&. Если использовать просто &, то все команды начнут выполняться одновременно, меня это никак не устраивает, с && — последовательно при успешном выполнении предыдущей команды.
Крайне важно иметь логи, чтоб знать, а не случилось ли чего не предвиденого. Сделать это можно используя перенаправление выводов на экран с помощью инструкции ‘>>’, сохранив всё в текстовый файл. Проблема в том, что 7zip пишет в консоль много не нужной информации, в том числе и о запаковке каждого нового файла. Понятно, что при объемах в тысячи файлов вся информация в лог файлах не нужна. Поэтому нужно исключить все ненужные строки, оставить только те, где есть инфа о названии архива, результат выполнения архивации и инфу об ошибках, если они появятся.

Нам на помощь приходит FINDSTR. В данном случае она выглядит так:

findstr /P /I /V «Compressing 7-Zip»

Раскажу немного об использованных параметрах команды:

/P пропускает строки, с непечатными символами;

/I игнорируем регистр символов;

/V » » сам перечень слов для поиска и последующего удаления этих строк.

В результате получаем 3 строки:

Scanning
Creating archive archive_name
Everything is Ok

Записываю все в текстовый файл, для изучения:

findstr /P /I /V «Compressing 7-Zip» >> my_log_file

Теперь осталось только записать все три блока в единственную последовательность команд:

7za.exe a -tzip -ssw -mx7 -r0 -x@exclusions.txt full_path_archive work_dir | findstr /P /I /V «Compressing 7-Zip» >> my_log_file.%date%.txt

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong



Похожие посты:

Комментарии и пинг сейчас закрыты.