アーカイブを抽出するときに圧縮ファイルを削除する方法は?

アーカイブを抽出するときに圧縮ファイルを削除する方法は?

大容量アーカイブを解凍する必要があります。問題は、圧縮して抽出したファイルを収容するのに十分なディスク容量がないことです。解凍後すぐにアーカイブから圧縮ファイルを削除するオプションはありますか?それでは、どうすればいいですか?現在、私のファイルはtarコマンドで圧縮されていますが、他のサーバーでは異なるタイプに再パッケージすることができます。

答え1

メモ。ファイルが圧縮されている場合は機能しません!それについて考えてもしないでください! !

この場合、このようにしてみましょう。

tar アーカイブを逆方向に移動し、ファイルを抽出し、アーカイブから削除する簡単なスクリプトを作成しました。このファイルがその中のディレクトリ構造と連携しているかどうかはわかりませんでしたが、「フラット」tarアーカイブでのみテストしました。

スクリプトは次のとおりです。

#!/bin/bash

archive="$1"

while true
do
        file=$(tar --list -f tar.tar | tail -n 1)
        if [ -z "$file" ]; then
                break
        fi
        tar --extract -f "$archive" "$file" && tar --delete -f "$archive" "$file"
done

警告:私はこれをテストしました。ただし、上記のスクリプトが一部のファイルをスキップしたり、機能しなかったり、コンピュータをトースターに置き換えたりしないことを保証することはできません。自分の責任で使用してください!

私のテストは次のとおりです。

:/mnt$ ls -l
total 2445456
-rwxrwxr-x 1 va va        201 окт 28 08:50 do.sh
-rw-rw-r-- 1 va va 2504140800 окт 28 08:45 tar.tar
:/mnt$ df -h |grep /mnt
tmpfs                     3,0G  2,4G  684M  78% /mnt
:/mnt$ ./do.sh tar.tar
:/mnt$ df -h |grep /mnt
tmpfs                     3,0G  2,4G  684M  78% /mnt
:/mnt$ ls -lh tar.tar 
-rw-rw-r-- 1 va va 10K окт 28 08:53 tar.tar

tarアーカイブには最後にメタデータのみが含まれており、削除できます。

関連情報