rcloneは様々なストレージなどのファイルのやり取りをラップしてくれるツールです。今回はこのツールを用いて、ディレクトリのバックアップを自動で行えるように設定を行ってみたいと思います。
ちなみにrclone
ではなくrsync
を用いても同じようなことが可能です。(詳細についてはここでは触れません。)
rcloneで使用するコマンド
rclone copy
を使用します。rclone sync
などとの大きな違いはリモートのファイルが削除された場合でも、手元のファイルの削除は行わないことなどが挙げられます。その他、デフォルトでファイルの更新日時等をチェックして、必要最低限のファイルのみをコピーしてくれたりします。
以下にバックアップに使用しているコマンド例を示します。
$ rclone copy source:path dest:path
systemdのtimerで自動実行
シェルスクリプトの作成
上記の操作をシェルスクリプトにまとめます。
#!/bin/sh
rclone copy source:path dest:path
exit 0
保存場所はどこでも構いません。自身は~/.local/bin/rclone-backup.sh
に保存しています。
ユニットファイルの作成
/etc/systemd/system/rclone-backup.service
として保存します。
[Unit]
Description=rclone backup
[Service]
Type=simple
ExecStart=/bin/sh $HOME/.local/bin/rclone-backup.sh
User={USERNAME}
- タイマーを通して自動起動させるので、
[Install]
セクションは不要です。(直接systemctl enable
できなくなります。)
タイマーの作成
/etc/systemd/system/rclone-backup.timer
として保存します。
[Unit]
Description=run rclone backup
[Timer]
Unit=rclone-backup.service
OnCalendar=*-*-* 4:00:00
[Install]
WantedBy=multi-user.target
OnCalendar
で指定した日時にtimerを起動させることが可能です。上記例は毎日午前4時に起動します。
配置後変更を取り込むためにsystemd
をリロードし、タイマーを登録します。
$ sudo systemctl daemon-reload
$ sudo systemctl enable rclone-backup.timer
$ sudo systemctl start rclone-backup.timer
これで定期的にバックアップが行われるようになりました。正しく登録されたかの確認は、
$ sudo systemctl status rclone-backup.timer
で行うことができます。