Я архивирую папку с помощью следующей команды:
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/
являются двумя компонентами пути, отсюда и 2
in --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" .