S3で複数の大容量ファイルを単一の圧縮ファイルにバックアップする方法

S3で複数の大容量ファイルを単一の圧縮ファイルにバックアップする方法

私のアプリケーションには、合計10TBを超える数千のファイルが含まれています。

このデータをどこか(おそらくAWS S3)にバックアップする必要があります。

私の考えでは:

  1. バックアップ中のデータ圧縮
  2. バックアップを単一ファイルとして保存

たとえば、gzipで圧縮されたtarファイルです。

サイズのため、gzip圧縮tarファイルが大きすぎてローカルで作成できません。

私がすることができます:

  1. これらすべてのフォルダとファイルを単一の圧縮ファイルとしてAWS S3にストリーミングしますか?
  2. 圧縮ファイルをS3からマイディスクに再ストリーミングし、元のファイルシステムレイアウトを維持しますか?

答え1

これは基本的なパイプラインとsshユースケースです。

$ tar zcf - -C /path/to/your/files . | ssh S3_hostname 'cat > yourfile.tar.gz'

解凍:

$ ssh S3_hostname 'cat yourfile.tar.gz' | tar zxf - -C /path/to/extract/to

ここで重要なのは、ローカルファイルシステムのファイルの代わりに/tarで書くか、読み取る必要があることを示すことです。アーカイブを作成すると、tarのデータが入力され、S3ホストで実行されるリモート呼び出しにパイプされ、出力がファイルに書き込まれます。解凍シナリオでは、これはリモートホストからファイルを読み取るために呼び出され、ストリームは引数で指定されたパスにアーカイブを抽出するローカル呼び出しのストリームになります。stdoutstdintarstdoutsshcatyourfile.tar.gzsshcatstdintar-C

関連情報