Как извлечь файлы в другой каталог с помощью команды «tar»?

Я думал, что tar archive.tar /users/mylocation будет работать, но это не так. Как я могу это сделать?

tar
567 голосов | спросил goovim 26 Maypm11 2011, 20:01:42

6 ответов


817

Чтобы извлечь архив в каталог, отличный от текущего, используйте опцию -C или --directory, tar, как в

tar -xf archive.tar -C /target/directory

Обратите внимание, что целевой каталог должен существовать до запуска этой команды (его можно создать с помощью mkdir /target/directory).

Прочтите страницу руководства (команда: man tar) для других параметров.

ответил Wesley Rice 26 Maypm11 2011, 20:16:24
210

Обратите внимание, что если ваш архив уже содержит имя каталога, которое вы хотите изменить, добавьте параметр --strip-components=1:

tar xf archive.tar -C /target/directory --strip-components=1
ответил Bryan Larsen 21 Maypm14 2014, 22:32:44
20

Объединяя предыдущие ответы и комментарии:

Чтобы просто извлечь содержимое и создать целевой каталог, если он отсутствует:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

Чтобы извлечь, а также удалить корневой каталог (первый уровень) в zip

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
ответил Thamme Gowda 27 J0000006Europe/Moscow 2016, 22:29:04
5

Другой вариант - использовать -one-top-level. Это автоматически создаст каталог, основанный на имени файла оригинала.

tar zxvf filename.tgz --one-top-level

Кроме того, если вы хотите, вы можете указать свой собственный, и tar создаст его автоматически.

tar zxvf filename.tgz --one-top-level=new_directory
ответил Dean Householder 23 MaramFri, 23 Mar 2018 00:49:28 +03002018-03-23T00:49:28+03:0012 2018, 00:49:28
1

С tar 1.29 мы можем просто добавить имя каталога после имени файла tar. Например,

tar zxvf tar-file directory-name/
ответил Shunmuga priyan Selvaraju 30 J0000006Europe/Moscow 2018, 02:00:39
0

То, что я нашел интересным в отношении извлечения, заключается в том, что это зависит от того, как вы создали архив, см. этот пример

cd /tmp
mkdir folder
touch folder/file.txt

, когда вы делаете tar -zcvf folder.tar.gz folder все как ожидалось = когда вы разворачиваете ее сейчас, она будет неаргирована (папка будет создана, если вы ее удалили) в качестве /tmp/folder/.

Но когда вы создадите tar как tar -zcvf tmp-folder.tar.gz /tmp/folder, и вы распакуете его в папке /tmp, результатом будет /tmp/tmp/folder! В таком случае вам нужно развернуть его в /- tar -xf tmp-folder.tar.gz -C /

ответил Betlista 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 02 Sep 2017 01:25:01 +0300 2017, 01:25:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132