LoginSignup
0
3

More than 1 year has passed since last update.

MacのローカルディレクトリをS3にcronでバックアップ

Posted at

概要

ふと、MacのローカルファイルをS3にバックアップしようと思ったので。

TimeMachineも併用しているけど、S3にバックアップする利点として以下がある

  • インターネット経由でバックアップできる
    • TimeMachineに接続できない環境の時にもバックアップできる
  • 作成されてから期間が経過したファイルを低価格のストレージに移行したり、アーカイブできる
  • aws s3 sync を使うことで簡単にローカル・リモートが同期できる

aws-cliが使える環境であればすごく簡単にできる。

今回やるもの

  • MacにあるローカルディレクトリをS3にバックアップする
  • aws-cli を使ってS3と同期する
  • cron を使って定期的に同期を行う - S3のライフサイクル設定などファイル同期後の諸々は書きません

前提

  • Macでの動作だけ確認
  • aws-cli が実行可能な状況にしておく
  • S3にバケットを作成しておく
  • S3にアクセスするIAMユーザまたはロールが aws-cli にセットされている状態にしておく 

手順

shellの作成

s3にバックアップする処理をシェルを作成

vim ~/backup-to-s3.sh
#!/bin/zsh -l

// ~/Downloadsフォルダを同期する例
// 配下のディレクトリも再帰的にすべて同期してくれる
aws s3 sync ~/Downloads s3://[バケット名]/Downloads --profile=[aws-cliに設定したprofile名]

chmod 755 ~/backup-to-s3.sh

cronの設定

crontab -e
// 毎時30分に実行する例
30 * * * * /bin/zsh -l -c '/Users/xxxxxxxxx/backup-to-s3.sh > /Users/xxxxxxxx/backup-to-s3.log 2>&1'

cronでディレクトリアクセスできるようにする

Macの場合、デフォルトだとcron実行時にディレクトリアクセスが制限され、ファイル読み込みができない。

以下の手順でcron実行時のファイルアクセスを許可する必要がある

システム環境設定 -> セキュリティとプライバシー -> プライバシー -> フルディスクアクセス を開く

左下の鍵マークをクリックし、鍵を解除

image.png

+ ボタンを押す

image.png

Finderが開くので、ここで Command + Shift + G を押す
フォルダの場所を入力 で /usr/sbin/cron を入力

image.png

移動 を選択 -> cron を選択 -> 開く を選択

cron が出てくるのでチェック状態にする。

image.png

左下の鍵をクリックして鍵をかけた状態にする

これでOK。

試す

これで毎時30分になったタイミングでcronが実行され、指定したディレクトリ(今回の例だと ~/Downloads) をS3に同期してくれる。
初回実行時は存在するすべてのファイルがアップロードされ、2回目以降は差分更新される。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3