私のアプリケーションには、合計10TBを超える数千のファイルが含まれています。
このデータをどこか(おそらくAWS S3)にバックアップする必要があります。
私の考えでは:
- バックアップ中のデータ圧縮
- バックアップを単一ファイルとして保存
たとえば、gzipで圧縮されたtarファイルです。
サイズのため、gzip圧縮tarファイルが大きすぎてローカルで作成できません。
私がすることができます:
- これらすべてのフォルダとファイルを単一の圧縮ファイルとしてAWS S3にストリーミングしますか?
- 圧縮ファイルを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ホストで実行されるリモート呼び出しにパイプされ、出力がファイルに書き込まれます。解凍シナリオでは、これはリモートホストからファイルを読み取るために呼び出され、ストリームは引数で指定されたパスにアーカイブを抽出するローカル呼び出しのストリームになります。stdout
stdin
tar
stdout
ssh
cat
yourfile.tar.gz
ssh
cat
stdin
tar
-C