🧊

AWS S3 Glacier からのデータ復元を rclone で行う方法

に公開

はじめに

  • AWS S3 Glacier からデータを復元する際に、AWS S3 のコンソール画面から復元を行うとオブジェクト単位での復元になるため、大量のデータの復元には非効率。
  • rclone を使用すると、ディレクトリ単位での Glacier からのデータの復元が可能になり、コマンドを実行した後は放置可能。

rclone での復元手順

$ rclone backend restore aws:path/to/directory -o priority=Bulk -o lifetime=30
  • 復元コストを下げるため、pritority には Bulk を指定する。
  • 復元期間は lifetime で指定する。
  • コマンド実行後は S3 のコンソール画面もしくは AWS CLI でデータの復元ステータスを確認する。

tmux

  • オブジェクト数が多い場合、コマンドの実行時間が長くなるため、linux のリモートサーバからコマンドを実行する際などには、tmuxrclone 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 オプションで並列処理を調整する

ローカルにコピーする

aws s3 cp "s3://your-bucket-name/path-to-files/" "local-directory/" --recursive --force-glacier-transfer

Discussion