Як я можу використовувати команду Unix tar для неявного файлового шляху?


9

Я використовую tar -xvfкоманду, і вона проходить явний шлях. Однак шлях повний.
Приклад:

tar -xvf 13.2.tar

Він йде шляхом /mntпапки. /Папка заповнена.

Як я можу націлити файл на неявний шлях?


Вам слід чітко уточнити, що саме відбувається, оскільки ваш сучасний спосіб задавати питання робить навіть найскладніший кришталевий куля здається трохи туманним.

Відповіді:


2

Зазвичай tarпотрібен --absolute-namesабо --absolute-pathsваріант, щоб зберегти кореневу '/'частину під час створення архіву. Навіть якщо ви змусите це таким чином, екстракт також пропускає провідних '/'.


Однак якщо у вас є архів із ведучим, '/'і ви не зможете пропустити його під час вилучення, відповідь NoahD має працювати в такій формі,

pax -r -s ',/mnt,/new/path,' -v -f 13.2.tar

Я думаю, paxщо не обробляє стиснуті файли, тож вам потрібно буде передати файл після декомпресії pax.
Це піде так (якщо у вас є gzipped архів)

gunzip -c 13.2.tar.gz | pax -r -s ',/mnt,/new/path,' -v

Я знайшов цю сторінку вікі в Google саме зараз.


2

Різниця між використанням канонічного (він же явного) та відносного (те, що ви, ймовірно, називаєте неявним), полягає в тому, чи використовуєте ви /на початку.

Наприклад, якщо є поточний робочий каталог /usr/home/bob, наступні команди мають точно такий же ефект

тар -xvf foo.tar *
дьоготь -xvf ./foo.tar *
tar -xvf ./foo.tar ./*
tar -xvf /usr/home/bob/foo.tar *
tar -xvf /usr/home/bob/foo.tar ./*
tar -xvf /usr/home/bob/foo.tar / usr / home / bob / *

Але я підозрюю, що це насправді не ваше питання. Схоже, вам більше потрібно визначити використання диска та знайти не повний каталог. Це можна зробити за допомогою dfкоманди.

df -k # space on disk in kilobytes
df -m # as above, but in meg
df -g # as above, but in gig

І ви можете використовувати, mountщоб показати вам, які файлові системи змонтовані на яких пристроях.


0

Щоб створити файл tar з відносним шляхом,

cd /parent/of/dir/to/tar
tar cvf subdir.tar subdir

Для розпакування дьогтю в певний каталог, відмінний від поточного робочого каталогу, використовуйте перемикач -C (верхній регістр C).

Якщо ви хочете зняти файл з абсолютними іменами в ньому до точки, відмінної від кореня, вам, можливо, доведеться зіпсувати chroot(1).


0

Я вірю, що Pax зробить свою справу

pax -r -s, / mnt, / gooddir, -f 13.2.tar

Він повинен дозволити вам замінити новий кореневий каталог.

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