传递给 tar 命令的错误参数导致 file1 无法使用!

传递给 tar 命令的错误参数导致 file1 无法使用!

tar传递给命令的错误参数导致file1无法使用!正确的文件命令tar是:

$ tar cvf total.tar file1 file2 

但使用以下格式后我无法恢复file1

$ tar cvf file1 file2 total.tar
file2
tar: total.tar: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
$ ls -ltr
total 16
-rw-r----- 1      3 Apr 26 11:55 file2
-rw-r----- 1  10240 Apr 26 11:57 file1

$ file file1
file1: POSIX tar archive (GNU)


$ tar zxvf fil1
tar (child): fil1: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

答案1

您要求tar将文件存档file2total.tar放入名为 的存档中file1,它试图执行此操作。不幸的是,这意味着它file1被覆盖了,你现在能从中得到的是file2

tar tvf file1

(不要z在其中添加 a,您在创建存档时没有指定它)。

恢复的唯一方法file1是通过备份。

答案2

说明:fincvf是该选项的快捷方式-f,它期望将要 tar 的目标文件的名称作为下一个参数。 @AndrewHenle 和 @StephenKitt 已经描述了切换参数顺序的结果。

答案3

这是 的定义中众所周知的陷阱tar command line syntax

使用 my 代替可以避免该问题star

star当您在名称下调用它时,使用不同的错误更少的明智的 CLI 定义,并且它仍然比传统的 tar 实现安全得多,因为当调用为 时star它不会覆盖。plain filestar

相关内容