増分的にzipファイルを生成する

増分的にzipファイルを生成する

現在、S3には大きなディレクトリ(> 100 GB)があります。このディレクトリのzipアーカイブを作成したいと思います。

現在、そのディレクトリの内容をダウンロードし、サーバーに一時(一時)ディレクトリを作成します。次に、zipユーティリティを使用して一時ディレクトリをアーカイブします。これは、ピーク期間中のディスク使用量がディレクトリサイズの2倍であることを意味します。

一時ディレクトリを設定するのではなく、徐々にzipアーカイブを構築する方法を考えました。 zipアーカイブを保存するだけで、ディスク使用量が半分になります。

まずこれは可能ですか?第二に、パフォーマンスなどのように私が見ていないこのアプローチの欠点はありますか?

よろしくお願いします。

ベストアンサー1

はい、可能です。が作成されるzip archive.zip fileたびににzip追加しようとします。アーカイブがない場合は作成され、ファイルが追加されます。filearchive.zip

したがって、ファイルを一時フォルダにダウンロードするとします。

$ zip -j big.zip /tmp/download/file.dat  

ここでは-j、「迷惑パス」/tmp/download/パスを変更し、big.zip次の項目のみを含めます。file.dat

パスを持つアーカイブを作成するには作業ディレクトリが必要であるため、~/workアーカイブで表示するパスはその作業ディレクトリに相対的です。次に、ファイルをダウンロードまたは生成して、次の操作を~/work/some/path/file.dat行います。

# first you need to be in the work directory, 
$ cd ~/work

# create (download) the file into relative path
$ mkdir -p some/path
$ touch some/path/file

# do the archiving
$ zip ~/big.zip some/path/file.dat

# remove the file and path to it
$ rm some/path/file.dat
$ rmdir -p some/path

# repeat for another file

おすすめ記事