年末なのでデジカメのファイルをバックアップした。rsync と aws CLI を使って、DropboxとS3にバックアップを行った。更にタスクランナーに追加して、簡単にバックアップを実行できるようにした。
SDカードからDropbox
Dropboxの2TBプランを使っていて、空き容量に余裕があるのでDropboxに写真のバックアップをしている。
SDカードにデータが入ったカメラをUSBケーブルでmacにつないで、 rsync コマンドを使ってカメラのファイルをDropbox のフォルダに移動する。後はDropboxのデスクトップアプリがファイルをアップロードしてくれるのを待つ。
rsync -avu --progress --exclude=".*" /Volumes/Untitled/ ~/Library/CloudStorage/Dropbox/Camera/ZV1/
SDカードからS3
aws CLI の aws s3 sync コマンドを使って、s3バケットにカメラのファイルをアップロードした。Dropboxになにか問題が起きたときや、Dropboxを脱出したいときのことも考えてS3にもバックアップするようにした。まだS3にバックアップしておいたよかったと思ったことはないけど、保険みたいなものだ。
aws s3 sync --storage-class STANDARD_IA /Volumes/Untitled/ s3://your-s3-bucket
タスクランナーを使う
繰り返し行うことなので、忘れないようにタスクランナーで実行できるようにしてみた。
最近使い始めたTaskというタスクランナーを使った。
タスクの定義を Taskfile.yml
に書くと、 task タスク名
で実行できるようになる。以下の例では task backup-to-dropbox
でDropboxにバックアップするタスクが実行できる。
version: '3' tasks: backup-to-dropbox: desc: "カメラのファイルをDropboxにバックアップする" cmds: - rsync -avu --progress --exclude=".*" /Volumes/Untitled/ ~/Library/CloudStorage/Dropbox/Camera/ backup-to-s3: desc: "カメラのファイルをS3にバックアップする" cmds: - aws s3 sync --storage-class STANDARD_IA /Volumes/Untitled/ s3://your-s3-bucket
複数のタスクをまとめる
複数のタスクを呼び出すタスクを作る事もできる。以下の例では backup-to-dropboxとbackup-to-s3 の2つのタスク を呼び出す backup というタスクを追加した。
backup: desc: "カメラのファイルをDropboxとS3にバックアップする" cmds: - task backup-to-dropbox - task backup-to-s3
このように書くと一つのタスクで、他の複数のタスクを順番に実行できる。
グローバルタスク
ホームディレクトリにおいた Taskfile.yml に定義されたタスクは、どのディレクトリからでも task -g タスク名
で実行できる。
上記の場合だと task -g backup
というコマンドを実行すると、Dropboxへのバックアップを行った後に、S3へのバックアップを行う処理が実行される。
カメラのバックアップは手作業でやるとなるとやり方を忘れたり手間がかかる作業だ。なるべく自動化で簡単にしていきたい。