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でフォルダーとファイルを別のフォルダーに上書き差分コピーしたい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。
