Сервер в кармане, или просто о сложном!

главная - Статьи - Linux, FreeBSD

Многотомный архив tar 7zip

Теги: Система Linux Резервное копирование

У каждого есть свой способ делать бекапы и архивы. У меня тоже есть свой :)

Неоднократно сталкивался с ситуациями, когда архив tar.gz, созданный в Linux (tar -czvf) , нормально в Linux открывающийся, в Windows либо не открывался либо все время говорил об ошибках конца архива и прочее. А я хотел, чтобы архивы сервера можно было бы спокойно просматривать на Windows. В итоге родился вариант: tar | 7za. Почему не просто tar? Мне не поддался tar в плане multi-volume (точнее, я не очень-то и хотел), да и не сжимает он все же сам. А почему тогда не просто 7za? А потому, что в man 7za белым по черному написано, что 7za не сохраняет прав доступа и владельцев файлов. Поэтому сначала tar, потом 7zip.

Ставим 7zip в CentOS:

# yum install p7zip

Задача: создать многотомный архив (например, по 100 Мб) какой-либо папки на сервере.

tar cf - /var/www | 7za u -si -t7z -mx=5 -v100m backup.7z

Tar готовит архивы, передает из по конвейеру 7zip-у (обратите внимание, в Linux 7zip запускается командой 7za), который:

u - update (варианты a - add, d - delete, e - extract, l - list, t - test, x - extract with full path)

-si - читает StdIn от tar.

-t7z - создает архив в формате 7zip.

-mx5 - степень сжатия (от 0 до 9). 0 - без сжатия, зато очень быстро. Например, с -mx0 архив получился 546 Мб, с -mx5 - 251 Мб, а с -mx2 - 285 Мб.

-v100m - тома по 100 Мб.

Имя архива: backup.7z. Если томов архива будет несколько, они будут называться backup.7z.001, backup.7z.002, backup.7z.003 и т.д.

7za поддерживает пароли на архивы (-pYOUR_PAWWD), шифрует список файлов архива от просмотра и др. Я этим не балуюсь, но вам может оказаться полезным.

Помните шутку про бедуинов, которые, когда их спрашивают, сколько стоит покататься на верблюде, отвечают - бесплатно! Но вот "за слезть на землю" могут попросить денег. Так и сейчас, запаковать-то мы запаковали, а как извлечь данные из архива?

Распаковать архив 7zip можно так:

7za x backup.7z.001
tar tf имя_распакованного_архива

Или одной командой:

7za x -so backup.7z.001 | tar xf -

где -so указывает 7zip отправить вывод на StdOut, где его поймает tar и распакует в текущую директорию.

Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?