使用 tar 提取档案时无法设置目标目录

使用 tar 提取档案时无法设置目标目录

我正在尝试将 tar 存档提取到特定目录。我尝试使用 -C 标志,但它没有按预期工作。这是我使用的命令行

tar xvf myarchive.tar -C mydirectory/

这给了我以下错误:

tar: file -C: not present in archive
tar: file mydirectory/: not present in archive

我也尝试过在存档文件之前设置 -C 标志,但它只是说:

tar xvf -C mydirectory/ myarchive.tar
tar: -C: No such file or directory

我究竟做错了什么?

编辑:tar -tf 显示 tar 存档没有完整路径名:

tar -tf myarchive.tar
herareport/
herareport/bin/
...

答案1

::掸掉Crusty Old Unix Monger徽章上的灰尘::

来自评论:

如果我尝试使用,sudo -u myuser cd /home/myuser/; sudo -u myuser tar xvf /path/to/myarchive.tar它会尝试提取到错误的目录。

这是因为sudo cd它不是持久的(自己尝试一下 -sudo cd /然后运行pwd​​- 您将处于您开始的目录中,因此您的第二个sudo命令不会在您想要的位置运行)。

要解决这个问题,您需要告诉sudo它启动自己的 shell,以便您可以以目标用户身份运行多个命令。
sudo -u myuser -s -- "(cd /home/myuser ; tar xvf /path/to/tarfile)"可能会奏效。

(如果由于某种原因您的版本sudo不喜欢这个,sudo -u myuser sh -c "cd /home/myuser ; tar xvf /path/to/tarfile"也应该可以工作。)

(当然,这些都不能解释为什么-C它不能在 AIX 上按预期工作,但它应该可以解决您的眼前问题)

答案2

尝试

tar -xvC mydirectory/ -f myarchive.tgz 

答案3

由于你的 tarball 是使用完整路径创建的,因此请下载GNU tar并再次尝试,看看是否有效。

答案4

提取物我的存档文件/我的目录

命令:

cd /mydirectory
pax -rv -f myarchive.tar -s ',^/,,'

相关内容