どうやら問題があるようです。現在のディレクトリにいくつかの異なるファイルタイプがあり、タールの.pngファイル。私はこれで始めました:
find -name "*.png" | tar -cvf backupp.tar
どのファイルを指定しなかったため動作しませんでした。そこで、他の人のやり方を参考にして、xargs を追加しました。
find -name "*.png" | xargs tar -cvf backupp.tar
今回はうまくいき、backupp.tar ファイルが作成されましたが、ここで問題があります。どうやら解凍できないようです。次のように入力するたびに、
tar -xvf backupp.tar
何も起こりません。chmod と sudo を変更してみましたが、何も起こりません。
それで、完全に間違ったコマンドを入力したのでしょうか、それとも何か見逃したことがあるのでしょうか?
答え1
2 つのアプローチはどちらもほぼ機能していましたが、それぞれに明確な問題がありました。
最初のアプローチでは、ファイルのリストをパイプで渡そうとしますtar
。標準入力からファイルのリストを読み取りたい場合は、 /とオプションtar
を使用する必要があります。例:-T
--files-from
-
find -name '*.png' -print0 | tar -cvf backup.tar --null -T -
参考までに、公式ドキュメントをご覧ください。
注記:-print0
およびフラグを使用すると、--null
空白を含むファイル名も処理されるようになります。
tar
2 番目のアプローチでは、経由で実行しようとしていますxargs
が、「作成」オプション ( --create
/ -c
) を使用しています。 for ループで、または for ループ内で「作成」オプションを使用すると、反復ごとにアーカイブが上書きされます。 代わりに、「追加」オプション ( / ) または「更新」オプション ( / )xargs
のいずれかを使用してみてください。例:-a
--append
-u
--update
find -name "*.png" -exec tar -uvf backupp.tar {} \;
これにより、各反復の後にアーカイブを上書きするのではなく、アーカイブにファイルが追加されます。
いずれにしても、完了したら、「リスト」オプション ( --list
/ -t
) を使用してアーカイブの内容を表示し、すべてが期待どおりに動作したことを確認できます。
tar tf backupp.tar
答え2
ワイルドカードを使うだけで
tar -cvf backup.tar *.png
またはfind
find -name "*.png" | tar -cvf backup.tar -T -
オプション-T
はFILEからファイル名を取得します。この場合はstdinです。-