アーカイブを段階的に削除しながら、*。tarファイルを解凍します


1

小さなファイル(それぞれ1MB未満)の100GB tarファイルがあります。このファイルをディスクに保存すると、20GBの空きディスク容量が残ります。つまり、tarballにファイルを格納するのに十分なディスク領域がありますが、files + tarballを格納するには十分ではありません。

tarballで使用されているディスク領域を徐々に解放しながら、tarball内のファイルを抽出するにはどうすればよいですか?

Linux(Ubuntu)とWindowsの両方からこのディスクにアクセスできます。


ファイルシステムはファイルの圧縮をその場で許可していないため、それは不可能だと思います。しかし間違っている可能性があります。
Tニーラス

回答:


4

tarオプション--deleteのドキュメントには、次の興味深いテキストがあります。

この操作により、アーカイブが書き換えられます。アーカイブデバイスがディスクなどのメディア上の任意のポイントへの書き込みを許可している場合にのみ、アーカイブで「--delete」を使用できます。このため、磁気テープでは機能しません。

これには、メディアがランダムな読み取り/書き込みをサポートする必要があるため、少し幸運なこと--deleteに、アーカイブの新しいインスタンスを作成するために、アンパックを実行せずにインプレースで実行される可能性があります。この場合、20 GBのファイルを解凍し、アーカイブを圧縮するためにそれらを削除します。操作を5回(または6回)繰り返します。

アーカイブの最後からファイルを解凍し、アーカイブの逆の順序で削除することをお勧めします。tarが十分にインテリジェントである場合、アーカイブ内の最後のファイルが削除されるたびにアーカイブを縮小するだけであり、この方法では、削除のたびに次のすべてのファイルを何度もコピーする必要はありません。

これが機能しない場合、唯一のオプションは、展開されたファイルを含む別のディスクを見つけることです。


0

私はこれが正確な答えではないことを知っていますが、良いオプションがないため、別のホストでuntarになり、その後に使用しました

scp -r /path/to/folder user@host:/path/to/remote

最善の解決策ではありませんが、私にとっては許容できる回避策として機能しました。これは、tarを使用してファイルを同時に削除する場合の半分以上のケースの回避策としては良いと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.