我正在尝试将 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 ',^/,,'