.tarで解凍されたファイルを削除できますか?

.tarで解凍されたファイルを削除できますか?

ディスク容量の約70%を占めるファイルがあり、.tar同じディスクに解凍する必要があります。このtarコマンドには、プロセス中に解凍されたファイルを削除してスペースを消費しなくなるオプションはありますか?この--deleteオプションを使用すると、アーカイブから特定のファイルを削除できるようになりますが、抽出した最後のファイルを常に削除できるようにする.tar方法はありますか?tarこれにより、解凍されたファイルのサイズが増加するにつれて、.tarサイズが最終的にゼロに減少します。

また、プロセスが中断された場合、解凍されたファイルのみが存在するため、中断された部分から続行できます.tar

ベストアンサー1

#! /bin/bash
test ! -e "$1" && echo "Run with a tar archive" && exit
tar --list -f "$1" | tac | while IFS= read -r fname; do
    test "${fname: -1}" = '/' && continue # skip directories
    tar --extract -f "$1" "$fname" || exit 1 # let's stop in case we can't extract a file
    tar --delete  -f "$1" "$fname" || exit 2 # just in case
done
test "$?" = "0" && tar xf "$1" # restore directories timestamps

tacファイルを削除した後、tar がアーカイブ全体を書き換える必要がないように、ファイルの順序を変更するために使用されます。 tar はアーカイブを切り捨てるだけです。いくつかのファイルに対してスクリプトをテストしました。小さなファイルが多く含まれているアーカイブの場合、非常に遅くなる可能性がありますが、かなりうまく機能します。

"${fname: -1}"ファイル名の最後の記号を抽出します。スラッシュの場合はディレクトリなのでスキップします。ポータブルバージョンのレビューを確認してください。

おすすめ記事