среда, 19 марта 2014 г.

Работа с tar архивами и не только

Заметка на память о том, как правильно работать с архивами. Перечислю основные архивы и команды в консоли для их создания, распаковки и просмотра содержимого.

Упаковать, распаковать, просмотреть содержимое tar.gz или tgz архива:

user $ tar cvzf *.tar.gz path/to/folder
user $ tar xvzf *.tar.gz
user $ tar tvzf *.tar.gz

Упаковать, распаковать, просмотреть содержимое tar.bz2 или tbz2 архива:

user $ tar cvjf *.tar.bz2 path/to/folder
user $ tar xvjf *.tar.bz2
user $ tar tvjf *.tar.bz2

Упаковать, распаковать, просмотреть содержимое tar.xz архива:

user $ tar cvJf *.tar.xz path/to/folder
user $ tar xvJf *.tar.xz
user $ tar tvJf *.tar.xz

Упаковать, распаковать, просмотреть содержимое tar архива:

user $ tar cvf *.tar path/to/folder
user $ tar xvf *.tar
user $ tar tvf *.tar

Команды bz2 и gz не могут применяться к директории, только к отдельным файлам. Кроме того исходный файл, после применения данных команд будет удален, т. е. при упаковке останется только архив, а при распаковке останется только распакованый файл.

Упаковать, распаковать bz2 архив (исходный файл удаляется):

user $ bzip2 some_faile some_faile.bz2
user $ bunzip2 *.bz2

Упаковать, распаковать gz архив (исходный файл удаляется):

user $ gzip some_faile some_faile.gz
user $ gunzip *.gz

Распаковка Z архива:

user $ uncompress *.Z

Распаковка rar архива:

user $ unrar x *.rar

Распаковка zip архива:

user $ unzip *.zip

Распаковка xz архива:

user $ unxz *.xz

Распаковка 7z архива:

user $ 7z x *.7z

Распаковка exe архива:

user $ cabextract *.exe

Используемые в командах ключи имеют следующее значение:
    c - создать архив;
    x - позволяет извлекать файлы из архива;
    v - делает вывод tar подробным. Это означает, что на экран будут выведены все найденные в архиве файлы (если эта опция опущена, информация, выводимая в процессе обработки, будет ограничена);
    f - (эта опция всегда идет последней в списке опций) является обязательной опцией для команды tar, без неё tar пытается использовать магнитную ленту вместо файла архива;
    z - позволяет вам обрабатывать архив, сжатый gzip'ом (с расширением .gz);
    j - позволяет вам обрабатывать архив, сжатый bzip2 (с расширением .bz2);
    J - позволяет вам обрабатывать архив, сжатый xz алгоритмом (с расширением .xz).

Для настоящих же сисадминов можно накарябать скрипт вроде приведенного ниже (скопипастен отсюда). Тогда можно будет распаковывать любой из описанных архивов одной командой. Этот код можно добавить в файл .bashrc в своей домашней директории.
File ~/.bashrc
unpack () {
  if [ -f $1 ] ; then
    case $1 in
      *.tar.bz2) tar xvjf $1    ;;
      *.tar.gz)  tar xvzf $1    ;;
      *.tar.xz)  tar xvJf $1    ;;
      *.bz2)     bunzip2 $1     ;;
      *.rar)     unrar x $1     ;;
      *.gz)      gunzip $1      ;;
      *.tar)     tar xvf $1     ;;
      *.tbz2)    tar xvjf $1    ;;
      *.tgz)     tar xvzf $1    ;;
      *.zip)     unzip $1       ;;
      *.Z)       uncompress $1  ;;
      *.7z)      7z x $1        ;;
      *.xz)      unxz $1        ;;
      *.exe)     cabextract $1  ;;
      *)         echo "\`$1': Unknown method of file compression" ;;
    esac
  else
    echo "\`$1' no foud"
  fi
}
Теперь для распаковки достаточно набрать:

user $ unpack  file