Як витягнути дьоготь в інший каталог?


18

Це не працює:

tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive

Для мене не очевидно, що б це зробити, крім того, щоб витягнути його на місце і перемістити файли.

Відповіді:


28

Від man tar:

     -C directory
         In c and r mode, this changes the directory before adding the
         following files.  In x mode, change directories after opening the
         archive but before extracting entries from the archive.

тобто tar xC /foo/bar -f /tmp/foo.tar.gzповинен виконувати роботу. (на FreeBSD, але гугл GNU в основному однаковий у цьому відношенні, див. "Зміна робочого каталогу" в його посібнику )


4
Рекомендую перевірити таку поведінку у версіях смоли, що не стосується GNU . Сторінка керівництва Solaris згадує лише цей варіант у поєднанні з операціями додавання та заміни . Будучи цікавим, я перевірив це за допомогою екстракту . Solaris ' дьоготь нічого НЕ видавати будь - які помилки або попередження і витягнутий архів у поточній папці =: - /
КТФ

1
Також не працює над AIX версією tar: "Файл -C відсутній в архіві" - "-C" працює для створення тарболів.
DarkHeart

Чи можна замінити основний каталог новою назвою?
tofutim

9

якщо ви хочете витягнути архів tar, деінде, просто перейдіть до каталогу призначення та зніміть його там:

 mkdir -p foo/bar
 cd foo/bar
 tar xzvf /tmp/foo.tar.gz

Команда, яку ви використовували, шукає файл foo/barв архіві та витягує його.


9

Виконуємо:

(cd foo/bar ; tar xf /tmp/foo.tar.gz )

зробив би цю роботу.

В основному, це є нерестуванням нової оболонки (круглих дужок), в цій підпакеті змініть каталог на, foo/barа потім зніміть файл.

Ви можете змінити на ;, &&щоб бути впевненим, що cdпрацює добре.


1
Нічого собі, що ви можете запустити оболонку просто так, це досить круто! Я не здогадувався, що ти можеш це зробити.
Кіт Сунде

0
tar -xf ancd.tar.gz my/name/file

ви можете дати ім'я файлу за допомогою ./fileфайлу після tar.

tar -xf ancd.tar.gz ./my/name/file

якщо це працює, значить, ви створили дьоготь ./. використовуйте менше команди для перегляду вмісту дьогтю.

less ...tar.file  

0

Я наткнувся на те, що, здається, схоже питання, і вирішив його.

Проблема полягала у створенні файлу, а не у створеному файлі.

При спробі відстежувати та переносити файл у dir A я вказав шлях до вихідного файлу в команді tar

tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*

Те, що мені вдалося вирішити, - це

cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*

При передачі та витягуванні тарболу створюються необхідні підкаталоги.

tar -xvf MyFile.tar

0

Змініть каталог, куди потрібно витягнути

cd /u02/restore

якщо розташування витяжного файла під /u01/backup.tar, тоді

Витяг наступним чином:

cd /u02/restore
tar -xvf /u01/backup.tar

0

Команда:

tar -xzvf foo.tar.gz -C /home/user/bar/

буде витягувати вхідний файл "foo.tar.gz" в каталог /home/user/barпід час друку оброблених файлів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.