Как извлечь tarball, пропустив некоторые ведущие каталоги?

Как извлечь tarball, пропустив некоторые ведущие каталоги?

Я архивирую папку с помощью следующей команды:

tar jcf "home/username/forum/forum.tar.bz2" /var/www/forum/

Затем я извлекаю с помощью:

tar jxf forum.tar.bz2 ./

Он извлекается правильно, но создает /home/username/forum/var/www/forumпапку. Что мне нужно сделать, чтобы извлечь его в /home/username/forumпапку?

Спасибо

решение1

В дополнение кответ dv3500ea, вы можете использовать следующую команду для извлечения tar-архивов, var/www/forum/содержащих forum/:

tar xjf forum.tar.bz2 --strip-components=2

var/и www/являются двумя компонентами пути, отсюда и 2in --strip-components.

Если вы не уверены, что находится внутри tarball, используйте опцию t:

tar tjf forum.tar.bz2

Прокрутите его так less, чтобы вы могли использовать клавиши со стрелками для прокрутки.

Общее примечание об используемых вариантах:

  • x- извлекает tarball, я всегда ставлю его первым вариантом, так как логичнее всего увидеть, что делает команда
  • c- создает тарбол
  • t- выводит список содержимого тарбола
  • j- сделать tar uncompress bzip2 сжатые tarballs. Это излишне с .bz2расширением, так что вы можете удалить и эту опцию
  • f- эта опция ожидает имя файла в качестве аргумента, это либо архив, который нужно извлечь ( tar xf file.tar.bz2), либо создать ( tar cf file.tar.bz2)

решение2

При создании архива используйте -C /var/www/для изменения текущего каталога на /var/www во время создания архива.

tar jcf home/username/forum/forum.tar.bz2 -C /var/www/ forum

Это приведет к тому, что папка «forum» окажется на верхнем уровне архива и, следовательно, будет извлечена непосредственно в текущую папку при запуске:

tar jxf forum.tar.bz2 ./

решение3

Быстрое (и, возможно, неправильное) решение — изменить команду для смены каталогов перед тарированием. IE:

cd /var/www/forum; tar jcf "home/username/forum/forum.tar.bz2" .

Связанный контент