次のコマンドを使用して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
このエラーの説明が表示されません。どういう意味ですか?
vcfz
オプションから-
を削除します。 tar
はオプションにハイフンを必要としません。
ハイフンを使用すると、-f
オプションの引数はz
になります。したがって、コマンドは実際にはdvr_rdk_v1.tar.gz
およびdvr_rdk
をz
というアーカイブにアーカイブしようとしています。ハイフンがないと、オプションのセマンティクスが変更されるため、コマンドラインの次の引数、つまりアーカイブのファイル名がf
フラグの引数になります。
また、コマンドを実行するディレクトリへの書き込み権限も確認してください。
-f
オプションはファイル名の直前に置く必要があります。したがって、tar -vczf filename.tar.gz
の代わりに -vcfz
tarコマンド は、歴史的にUnix ユーティリティ構文ガイドライン に準拠していない数少ないコマンドの1つです。
Tarの標準ページには次のように書かれています。
f
システム依存のデフォルトの代わりに、アーカイブの名前として最初のファイルオペランド(またはbがすでに指定されている場合は2番目)を使用します
構文ガイドラインにはこれが含まれていますが、
ガイドライン5:
オプション引数のない1つ以上のオプションの後に、オプション引数を取る最大1つのオプションが続く場合、1つの「-」区切り文字の後ろにグループ化すると受け入れられます。
したがって、入力したコマンドtar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/
は、古いバージョンのtarでは問題ありませんが、ユーティリティの構文ガイドラインに厳密に従って記述された特定のバージョンのtarは、これを解析して「use z
as -f
"のファイル引数。したがって、移植可能にするために次のコードを使用する必要があります。
tar -cvzf dvr_rdk_v1.tar.gz dvr_rdk/