nakaoka3の技術ブログ

2023年中に52本なにか書きます

年末なのでカメラのファイルをバックアップした

年末なのでデジカメのファイルをバックアップした。rsyncaws 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 CLIaws s3 sync コマンドを使って、s3バケットにカメラのファイルをアップロードした。Dropboxになにか問題が起きたときや、Dropboxを脱出したいときのことも考えてS3にもバックアップするようにした。まだS3にバックアップしておいたよかったと思ったことはないけど、保険みたいなものだ。

aws s3 sync --storage-class STANDARD_IA /Volumes/Untitled/ s3://your-s3-bucket

スクランナーを使う

繰り返し行うことなので、忘れないようにタスクランナーで実行できるようにしてみた。

最近使い始めたTaskというタスクランナーを使った。

nakaoka3.hatenablog.com

タスクの定義を Taskfile.yml に書くと、 task タスク名 で実行できるようになる。以下の例では task backup-to-dropboxDropboxにバックアップするタスクが実行できる。

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へのバックアップを行う処理が実行される。

カメラのバックアップは手作業でやるとなるとやり方を忘れたり手間がかかる作業だ。なるべく自動化で簡単にしていきたい。