現在、S3には大きなディレクトリ(> 100 GB)があります。このディレクトリのzipアーカイブを作成したいと思います。
現在、そのディレクトリの内容をダウンロードし、サーバーに一時(一時)ディレクトリを作成します。次に、zip
ユーティリティを使用して一時ディレクトリをアーカイブします。これは、ピーク期間中のディスク使用量がディレクトリサイズの2倍であることを意味します。
一時ディレクトリを設定するのではなく、徐々にzipアーカイブを構築する方法を考えました。 zipアーカイブを保存するだけで、ディスク使用量が半分になります。
まずこれは可能ですか?第二に、パフォーマンスなどのように私が見ていないこのアプローチの欠点はありますか?
よろしくお願いします。
ベストアンサー1
はい、可能です。が作成されるzip archive.zip file
たびににzip
追加しようとします。アーカイブがない場合は作成され、ファイルが追加されます。file
archive.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