以前、僕は、
という記事を書いた様に、
という組み合わせでバックアップを取っていました。
しかしながら、この組み合わせを使ってた際には、バックアップの暗号化を rclone 側で行なっていて、
暗号化鍵の含まれる rclone の設定ファイルのバックアップめんどい
とか言う理由で、 バックアップを取る事への心理的コストが上がり 、 結局、実際には定期的なバックアップを取らずじまいにまっていました。
それで、その辺りもうそろそろなんとかしないとなーとは前々から思っていたのですが、 今日になり、
もうそろそろ、バックアップ周りを本気出して改善しよう
と思えるぐらいにはなったので、色々試したり shell script を書いていた結果、
と言う組み合わせで、
あ、これなら行けそう
と思える環境が出来たので、とりあえずその辺りを書きます。
restic とはなんぞや?
は、一言で言えば、
golang で書かれた、割とイケてるバックアップツール
です。
あと 、golang 製なので、
- バイナリを GitHub から取ってきてポン付け配置で実行可能
という特長もあり、 Linux は勿論のコト、macOS や Windows でも使えるっぽいので、 そういった意味では、割とプラットフォームを選ばない感じ、だと思います。
実際にどの様にバックアップを取っているか
ザックリ言うと、
restic
を使って、USB 3.0 接続の外付け HDD の repository へ暗号化バックアップ- その 暗号化済み repository を
rclone
を使って Google Drive へ sync - あとは、その一連の流れを systemd の timer とか使って実行
という感じです。
なお (3) に関して言えば、実際には未だ作業中で、NixOS のシステムにはまだ登録は出来てないです。はい。
また、 (1) と (2) を行う際に、手作業でコレを行うのはダルいので、実際には、 下記の様な shell script を、結構ザツに書いて使っています:
#!/usr/bin/env zsh function restic-wrapper() { exec /home/nyarla/local/bin/restic \ -r /data/mnt/backup/data/restic \ -p /etc/restic/config \ -q \ ${@} } function restic-store() { restic-wrapper backup \ -e '**/.DS_Store' \ -e '**/node_modules/' \ -e '/data/live/downloads' \ --tag "$(date +%Y-%m-%d)" \ /data/archive \ /data/live \ /data/sync } function restic-upload() { rclone sync /data/mnt/backup/data/restic gdrive:/Backup/NyXPS15 --quiet } case "${1:-}" in store) restic-store ;; upload) restic-upload ;; *) restic-wrapper ${@:-} ;; esac
なお、この shell script 、 Path 周りがそのままベタ書きなため、再利用性は低いですが、 まあ、なんかの役に立つでしょ、という感じで公開しておきます。
使ってみた感想
雑に (多分) 堅牢なバックアップ取れるって良いですね!!!
以上
って、 雑にブログ書いてどーすんだ 、って感じも無きにしも有らずですが、 雑に書いてないと毎日もブログ書くネタとかネーヨって感じなので、まあ キニスンナ です、はい。
ま、あとはまあ、今日、昼から夕方にかけて、天候に引き摺られて、結構、精神的にアレな感じだったのも、 ブログが雑になってる要因の一つですが、まあそんなコト知ったこっちゃねぇって感じ デスヨネー 。
まぁ、今日、調子が悪かったにしろ、ここの所、懸案だったバックアップ周りがなんとかなったので、 とりあえず自分的には満足しています。はい。