古いHDDをUSB外付けケースに入れてバックアップ用に利用しているのですが、rsyncを使ったバックアップやmacのTimeMachineが遅くなるので、最近はrestic を使っています。
resticを使っていて感じたメリットをいくつか紹介しておきます。
- 効率性
- クロスプラットフォーム
S3をストレージに使えるくらいなので、HDDの速度が初回バックアップの書き込み時間以外には全く問題にならないくらい高速です。
さて、最近Uvが話題になって触っていたのでRustのプロジェクトを何度かビルドしていたのですが、resticを動かすと差分バックアップでtargetディレクトリがバックアップされているのに気づきました。そして何かいい除外パターンが無いかなとtargetディレクトリを眺めたときに見つけたのが CACHEDIR.TAG ファイルです。調べてみたところ、まさにバックアップから除外するディレクトリを指定するためのファイルのようです。 ~/.cargo/git
と ~/.cargo/registry
にも CACHEDIR.TAG が入っているので、Rustの世界では広く普及しているみたいです。
Cache Directory Tagging Specification – Bryan Ford's Home Page
そしてResticもbackupコマンドの --exclude-caches
オプションを指定したら自動でこのファイルを見つけてバックアップから除外してくれていました。
Backing up — restic 0.16.4 documentation
そして uv も2日前にvenv作成時にvenvディレクトリ内に CACHEDIR.TAG を作るようになっていました。
私はすでに .venv
も ~/.cargo
もバックアップ除外パターンに入れてしまっていたのですが、除外パターンというのは設定をミスると必要なファイルのバックアップが取れなくなったりするものなので、CACHEDIR.TAGはどんどん活用していこうと思います。