🪣

s3 sync コマンドでローカルのファイルを S3 上に定期バックアップする

2023/02/10に公開

はじめに

ローカルの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