使用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档案没有完整的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.tar 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上没有像预期的那样工作,但是它应该解决您当前的问题)

尝试

 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 ',^/,,'