我试图提取一个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档案没有完整的path名称:
tar -tf myarchive.tar herareport/ herareport/bin/ ...
:: Crusty Old Unix Monger徽章::
来自评论:
如果我尝试使用
sudo -u myuser cd /home/myuser/; sudo -u myuser tar xvf /path/to/myarchive.tarsudo -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上没有像预期的那样工作,但是它应该解决您当前的问题)
尝试
tar -xvC mydirectory/ -f myarchive.tgz
由于您的tarball是使用完整path创build的,因此请下载GNU tar,然后重试以查看它是否可用。
mv myarchive.tgz mydirectory/ && tar xvf mydirectory/myarchive.tgz
将myarchive.tar提取到/ mydirectory
命令:
cd /mydirectory pax -rv -f myarchive.tar -s ',^/,,'