tar が終了すると、「計算できません。ディレクトリにファイルがありません」というメッセージが表示されます。なぜですか?

tar が終了すると、「計算できません。ディレクトリにファイルがありません」というメッセージが表示されます。なぜですか?

次のコマンドを使用してtar.gzファイルを作成しようとしています。

sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/

その後、ファイルの作成(フォルダ内の多くのファイル)が起動しますが、次のエラーが発生します。

tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

このエラーの説明は表示されません。これはどういう意味ですか?

答え1

-vcfzオプションから削除されました。tarオプションにはハイフンは必要ありません。

ハイフンが使用されている場合、このオプションの引数は-fですz。したがって、コマンドは実際には、と呼ばれるdvr_rdk_v1.tar.gzアーカイブdvr_rdkファイルにアーカイブしようとしますz。ハイフンがないと、コマンドラインの次の引数(アーカイブのファイル名など)がフラグの引数になるようにオプションの意味が変更されますf

また、コマンドを実行するディレクトリに対する書き込み権限も確認してください。

答え2

この-fオプションはファイル名の直前に表示する必要があります。したがって、tar -vczf filename.tar.gz代わりに使用してください。-vcfz

答え3

これtarコマンド歴史的にUnixに従わない数少ないコマンドの1つ実用文法ガイド

tarの標準ページは次のように言います。

fは、
システム依存のデフォルトではなく、最初のファイルオペランド(またはbが指定されている場合は2番目のオペランド)をアーカイブ名として使用します。

文法ガイドには以下が含まれます。

手順5:
オプション引数を持たない1つ以上のオプションと、オプション引数を持つ最大1つのオプションが「-」区切り文字の後にグループ化されている場合は、許可する必要があります。

したがって、入力したコマンドはtar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/以前のバージョンのtarで正しく機能しますが、ユーティリティ構文のガイドラインに厳密に従うように書かれた一部のtarバージョンはそれを「used as」zファイル引数として解析します-f。したがって、移植性には次のものを使用する必要があります。

tar -cvzf dvr_rdk_v1.tar.gz dvr_rdk/

答え4

将来の読者のために、この投稿それが私の答えです。引用符の外側にワイルドカードを保持します。tar -zcf archive.tar.gz "file-0"*

関連情報