🪣
s3 sync コマンドでローカルのファイルを S3 上に定期バックアップする
はじめに
ローカルのPCが突然壊れたときのために、データのバックアップを取りたいな、と考えました。
ただ、外付け SSD を新しく買うのも高いですし、毎回 PC に USB 接続するのが面倒で結局バックアップを取らなくなってしまう…といった経験があったため、今回はインターネットさえ繋がっていればバックアップがとれるよう、AWS の S3 を使ってお手軽バックアップを取る方法を試してみます。
S3 バケットを作成する
マネジメントコンソールにログインし、[バケットを作成] を押す
バケット名を設定する
最下部までスクロールして [バケットを作成] を押す
s3 sync を使ってバックアップを取る
AWS CLI の設定ができていれば、あとはコマンドを打つだけです。
aws s3 sync {ローカルPCのバックアップしたいディレクトリ} s3://{👆で作成したバケット名}
s3 sync 用のシェルを作る
毎回👆のコマンドを叩いてバックアップを取得してもよいのですが、シェルスクリプトを作って、シェルを実行するだけで定期バックアップができると便利です。以下のようなシェルを書いて、s3sync.sh
として保存しましょう。
#!/bin/zsh
# バケット名を定義
bucket_name="{作成したバケット名}"
# ローカルの /Users/hogehoge/001 の中身を S3 バケットにコピーする
aws s3 sync "/Users/hogehoge/001" "s3://${bucket_name}/001"
# ローカルの /Users/fuga/002 の中身を S3 バケットにコピーする
aws s3 sync "/Users/fuga/002" "s3://${bucket_name}/002”
以下のコマンドでシェルを実行すると、対象のディレクトリを S3 にコピーすることができます。
zh s3sync.sh
cron を仕込んでおく
毎回自分でシェルを実行しても良いのですが、より便利にするための cron
を使って自動実行させるようにしましょう。
cron の登録
Terminal で以下のコマンドを実行しましょう。
crontab -e
cron にシェルを登録する
では、毎朝 5 時にシェルを実行するよう、処理を記載しましょう。
0 5 * * * /{実行するシェルのパス}/s3sync.sh
cron の登録内容の確認
以下のコマンドを実行し、先程登録した内容が反映されていることを確認します。
crontab -l
おわりに
手元の PC のデータを簡単にバックアップしたい!という際に S3 を使う方法のご紹介でした。
いざというときのために、データはバックアップしておきましょうね!
Discussion