вторник, 8 октября 2013 г.

Как исключить папки из бекапа 7za

Задача:
Настроить бекап на винде с исключением определенных папок

Инструмент:
7zip

Приступим.

И так, нужно бекапить нужные нам файлы в нужное место, при этом исключить несколько директории.

После определенных наступаний на грабли, строка приняла вид:

7za.exe a -tzip -ssw -mx5 -r0 -x@exclusions.txt D:\backup\bak_%data%_archive C:\file_for_backup > log.txt

Поподробней об использованных ключах:

-tzip формат архива установлен в zip, без этого ключа умолчальный формат 7z;

-ssw принудительная упаковка файлов, которые в данный момент открыты для записи (мало ли кто-то засиделся на работе и что-то там правит);

-mx7 высокая степень сжатия (7), можно поставить и 5 (нормальное сжатие), тогда процесс пойдет побыстрее;

-r0 (это ноль, а не буква О) исключения, которые будут прописаны дальше обрабатываются только в рабочем каталоге;

-x@exclusions.txt это собственно говоря файл со списком исключений, которые не будем архивировать. Каждая строка файла — новое исключение. Можно использовать маски типа *.ext и т.п. Если исключение не много, то можно обойтись и без файла, в таком случае ключ примет следующий вид: -x!*.ext;

D:\backup\bak_%data%_archive это соответственно путь и имя нового архива;
%data% - соответственно дата создания архива;

C:\file_for_backup это папка, которая подлежит упаковке;
> log.txt - вывод будет перенаправлен в текстовый файл.

Все вроде бы просто, закидываем в exclusions.txt директории которые нам не нужны и определенные файлы по маске и радуемся жизни, но не все так просто. Если работа с исключениями по маске пашет как часы, то вот с папками у меня был полный провал. 

Сам exclusions.txt был вида:
*.log
*.tmp
C:/file_for_backup/papka1/no_bak
C:/file_for_backup/papka2/papka3/no_bak1

В итоге папки не работали, после нескольких часов экспериментов, получилось добиться нужного результата сделав вот так:
*.log
*.tmp
*/papka1/no_bak
*/papka2/papka3/no_bak1

В чем была проблема и почему 7za не нравятся абсолютные пути, я так и не понял, добавление двойных кавычек тоже кстати ни какой роли не сыграло, хотя их советуют ставить.

P.S. Да, и ни в коем случае не делайте бекапы на тот же винт, лучше их куда-то сливать, а уж что это, облако или другой сервер, решать вам.

2 комментария:

  1. exclusions.txt в каком каталоге размещять необходимо?

    ОтветитьУдалить
  2. В exclusions.txt адреса файлов и каталогов указывается относительно корня архива.

    Пример файла:
    file_for_backup/papka1/no_bak
    file_for_backup/papka2/papka3/no_bak1

    ОтветитьУдалить