rcloneを使用してディレクトリのバックアップをとる

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

で行うことができます。

Built with Hugo
Theme Stack designed by Jimmy