главная - Статьи - 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 и распакует в текущую директорию.
Авторизуйтесь для добавления комментариев!