Как использовать команду tar Unix с неявным путем к файлу?

9

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

tar -xvf 13.2.tar

Это путь к /mntпапке. /Папка заполнена.

Как я могу заархивировать файл с неявным путем?

Энтон
источник
Вы должны четко уточнить, что именно происходит, поскольку ваш нынешний способ задать вопрос заставляет даже самый сложный хрустальный шар казаться слегка туманным.

Ответы:

2

Обычно tarтребуется опция --absolute-namesили, --absolute-pathsчтобы сохранить корневую '/'часть при создании архива. Даже если вы заставите его таким образом, экстракт также пропускает ведущие '/'.


Однако, если у вас есть архив с ведущим, '/'и вы tar не пропускаете его при извлечении, ответ NoahD должен работать в этой форме,

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

Я думаю, paxчто не обрабатывает сжатые файлы, поэтому вам нужно будет разархивировать после распаковки в pax.
Это будет так (при условии, что у вас есть архив в формате gzip)

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

Я нашел эту вики-страницу в Google только сейчас.

Nik
источник
2

Разница между использованием канонического (или явного) и относительного (что вы, вероятно, называете неявным) заключается в том, используете ли вы /в начале.

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

tar -xvf foo.tar *
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

Чтобы распаковать tar в определенный каталог, отличный от текущего рабочего каталога, используйте ключ -C (прописные буквы C).

Если вы хотите распаковать файл с абсолютными путями в другой точке, отличной от root, вам может потребоваться возиться chroot(1).

robc
источник
0

Я верю, что Пакс сделает свое дело

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

Это должно позволить вам заменить в новом корневом каталоге.

Энтон
источник