コマンドラインでフォルダ内のすべてのファイルを圧縮し、圧縮されていないバージョンを削除するにはどうすればよいですか?

コマンドラインでフォルダ内のすべてのファイルを圧縮し、圧縮されていないバージョンを削除するにはどうすればよいですか?

ディスクのスペースを節約するために、圧縮したいファイルの非圧縮バージョンを含むバックアップディスクがあります。圧縮するファイルを含むディスクがいっぱいです(約3TBのうち17GBは空き容量です)。ディスク上のすべてのファイルを見て、圧縮されていないバージョンを削除しながら圧縮するために実行できるコマンドまたはスクリプトはありますか?たとえば、f1 f2 f3 などのフォルダがある場合は、f1.tar.gz f2.tar.gz f3.tar.gz で終わり、圧縮されていない元のフォルダを削除してスペースを増やしたいですか?また、サブフォルダでも動作しますか?

編集:破損の危険なしにファイルをできるだけ圧縮したいです。約150の親ディレクトリがあり、ほとんどが10〜50のサブフォルダで構成され、一部にはすでに圧縮ファイルが含まれています。単純化された例として、私のファイル構造は次のとおりです。

Parent folders:
parent1 parent2 parent3

これらのそれぞれには、次の内容があります。

child1 child2 child3 file1.zip

誰でも持っているかもしれません。

file1 file2.zip file2.tar.gz file3

もちろん、一部の親フォルダにはサブフォルダなしでファイルのみが含まれています。私が望むのは、bashでスクリプトを実行するか、tar putコマンドを使用して次のように親フォルダを圧縮することです。

parent1.tar.gz parent2.tar.gz parent3.tar.gz

圧縮されていない親フォルダを削除している間、コマンドは最初にparent1.tar.gzを圧縮してから(同じハードドライブにtarballファイルに十分なスペースがあると仮定して)削除するので、ファイル構造は次のようになります。

parent1.tar.gz parent2 parent3,

その後、コマンドはparent2とparent3に対して同じことを行い、最終ファイル構造は次のようになります。

parent1.tar.gz parent2.tar.gz parent3.tar.gz

可能であれば、このタスクをサブフォルダに拡張する方法を知ることをお勧めしますが、これが複雑すぎる場合や余分なスペースを節約できない場合は必要ありません。各ファイルが占めるスペースの順序でファイルをソートする方法を知り、プロセスを自動化するのに十分なスペースを確保する前に、個別に圧縮する必要があるファイルの数を確認することもできます。不要。

ベストアンサー1

誰かがスクリプトを持っているか、書くことができます。このようなことをするときは、次のいずれかをzip使用します。台本gzipまたはbzip2を使用してください。両方とも、アーカイブが完了した後にファイルを削除する規則があります。

問題は

  • もちろん、各ディレクトリごとにzipアーカイブを作成できます。
  • アーカイブが完了するまでディレクトリを削除できません。
  • たとえば、ファイルを追加する方法で圧縮されたアーカイブを更新することはできません。

したがって、最初のアーカイブを作成するには十分な空き容量が必要であり、大きなアーカイブを作成するには徐々に十分なスペースを確保する必要があります。おそらく、圧縮ファイル(png、jpg、pdfなど)はあまりありません。それ以外の場合、スペースは解放されません。

スペースが不足する可能性が高くない場合、問題は圧縮/削除中のディレクトリのスクリプトループだけです。ただし、3Tb、17Gbの空き容量がある場合、一部のディレクトリはかなり大きくなる可能性があります。これが説明されている簡単な解決策を妨げていることを確認するには、いくつかの分析を実行する必要があります。

追加資料:

おすすめ記事