🧊
AWS S3 Glacier からのデータ復元を rclone で行う方法
はじめに
- AWS S3 Glacier からデータを復元する際に、AWS S3 のコンソール画面から復元を行うとオブジェクト単位での復元になるため、大量のデータの復元には非効率。
-
rcloneを使用すると、ディレクトリ単位での Glacier からのデータの復元が可能になり、コマンドを実行した後は放置可能。
rclone での復元手順
- rclone backend restore を使用する。
$ rclone backend restore aws:path/to/directory -o priority=Bulk -o lifetime=30
- 復元コストを下げるため、
pritorityにはBulkを指定する。 - 復元期間は
lifetimeで指定する。 - コマンド実行後は S3 のコンソール画面もしくは AWS CLI でデータの復元ステータスを確認する。
tmux
- オブジェクト数が多い場合、コマンドの実行時間が長くなるため、linux のリモートサーバからコマンドを実行する際などには、
tmuxをrclone backend restoreの前に予め使用する。 -
tmuxを使用することで接続が切れた場合でもデータの復元が中断されない。
並列処理
-
xargsで並列処理を利用すると復元が早めることができる。
$ BUCKETPATH="aws:path/to/directory"; rclone lsd "$BUCKETPATH" --fast-list | awk '{print $5}' | xargs -P 4 -I{} rclone backend restore "$BUCKETPATH"/{} -o priority=Bulk -o lifetime=30
-
-Pオプションで並列処理を調整する
ローカルにコピーする
-
--recursive --force-glacier-transferを使用しないと復元したGlacier Objectでもダウンロードがスキップされる。 - https://repost.aws/questions/QUFozqBdZTQbmiUYTNRYUwog/recovering-and-syncing-files-from-s3-glacier-flexible-retrieval
aws s3 cp "s3://your-bucket-name/path-to-files/" "local-directory/" --recursive --force-glacier-transfer
Discussion