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(アーカイブの作成時に指定しなかったため、ここに追加しないでください。)

回復できる唯一の方法はfile1バックアップを通してです。

答え2

説明:finはcvfこのオプションへのショートカットです-f。このオプションは、次の引数でtarするターゲットファイルの名前を想定します。 @AndrewHenleと@StephenKittは、パラメータ順序の切り替えの結果を説明しました。

答え3

これは定義でよく知られているトラップですtar command line syntax

代わりにmyを使用すると、この問題を回避できますstar

star他のエラー固有のCLI定義を使用することは、名前で呼び出すときはあまり一般的ではなく、呼び出し時に上書きされないstarため、既存のtar実装よりもはるかに安全です。plain filestar

関連情報