如何使用带有隐式文件路径的Unix tar命令?


9

我正在使用tar -xvf命令,并且正在使用显式路径。但是,路径已满。
例:

tar -xvf 13.2.tar

它正在使用/mnt文件夹的路径。该/文件夹已满。

如何使用隐式路径将文件压缩?


您应该清楚地说明到底发生了什么,因为您目前的提问方式甚至使最复杂的水晶球都显得有些朦胧。

Answers:


2

在创建档案时,通常tar需要--absolute-names--absolute-paths选项来保留根'/'部分。即使您以这种方式强制执行,摘录'/'也会跳过开头。


但是,如果您有一个包含'/'开头的档案,而tar在提取文件时并未跳过该档案,则NoahD的答案应采用这种格式,

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

我认为pax不处理压缩文件,因此您需要在解压缩到后进行管道处理pax
就像这样(假设您有一个压缩的存档)

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

我刚刚在Google上找到了这个Wiki页面


2

使用规范的(又名显式的)和相对的(可能称为隐式的)之间的区别是,是否/在开始时使用a 。

例如,如果当前工作目录为/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)


0

我相信pax会成功

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

它应该让您替代新的根目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.