single.php

Ubuntuでフォルダー内のファイルを定時で差分バックアップする方法

Ubuntuの[Jellyfin]で管理している画像や動画ファイルを、差分バックアップを作る際に、少しハマったので定時でフォルダー内のファイルを差分コピーする場合の備忘録的な投稿です。

[rsync]コマンドで差分コピーが可能

Ubuntuでファイルの差分コピーを作る場合は[rsync]コマンドの[–update]オプションで可能でした。

例えば、[/mnt/hdd1/sample/]フォルダーを[/mnt/hdd2/sample/]フォルダーにファイルが新しい場合のみコピーを行う場合は、次のオプションで実行できます。

/usr/bin/rsync -a --update /mnt/hdd1/sample/ /mnt/hdd2/sample/

[service]と[timer]ファイルで定時実行

レンタルサーバーなどのLinuxで定時で実行する際は[cron]一択でしたが、その他にも[service]と[timer]ファイルで定時にコマンドが実行できます。

今回は[service]と[timer]ファイルで[rsync]コマンドを1日1回実行するバックアップを作成してみました。

1.[service]ファイルを作成します。(エディターは、適宜読み替えてください)

sudo vim /etc/systemd/system/my-backup.service
my-backup.service

[Unit]
Description=Daily backup with rsync

[Service]
Type=oneshot
ExecStart=/usr/bin/rsync -a --update /mnt/hdd1/sample/ /mnt/hdd2/sample/

2.[start]で手動で実行してファイルのコピーをテストします。

sudo systemctl start my-backup.service

3.[timer]ファイルを作成します。(エディターは、適宜読み替えてください)

sudo vim /etc/systemd/system/my-backup.timer
my-backup.timer

[Unit]
Description=Run backup every day at 04:00

[Timer]
OnCalendar=*-*-* 04:00:00
Persistent=true

[Install]
WantedBy=timers.target

4. systemd に反映と有効化を行います。

sudo systemctl daemon-reload
sudo systemctl enable --now my-backup.timer

5.[list-timers]でタイマー設定を確認します。

systemctl list-timers

[my-backup.timer]の NEXT が[04:00]と表示されていれば正常

設定した定時を経過後に[journalctl]コマンドで、実行結果を確認します。

journalctl -u my-backup.service

まとめ

Ubuntuの[Jellyfin]で管理している画像や動画ファイルを、差分バックアップを作る際に、定時でフォルダー内のファイルを差分コピーする場合について書きました。

ファイルの差分コピーを作る場合は[rsync]コマンドの[–update]オプションを利用すると簡単に実行できます。

また、定時での実行は[service]と[timer]ファイルを作成すると[cron]などを使わずに、コマンドをスケジュール設定が可能です。

Ubuntuでフォルダーとファイルを別のフォルダーに上書き差分コピーしたい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です