UbuntuでバックアップといえばCPコマンドを思い浮かべる方も多いですが、rsyncを使うと「変更されたファイルだけを転送する」差分バックアップが実現できます。実際に検証してみると、初回フルバックアップ後の2回目実行では転送量がほぼゼロになり(speedup 63,937倍)、サーバーへの負荷も通信量も大幅に削減できることが分かりました。
この記事では Ubuntu 24.04 LTS を使って、rsyncのインストールから自動バックアップの設定まで、実際にコンテナで動かした実測データをもとに解説します。
この記事のポイント
sudo apt install rsync1コマンドで導入できる(バージョン 3.2.7、Ubuntu 24.04 標準)- 差分バックアップの効率が圧倒的:変更ファイルのみ転送し、初回の 63,937倍 高速になる(実測)
- cron か systemd timer でスケジュール実行し、完全に自動化できる
--deleteオプションで「バックアップ先にだけある古いファイルを自動削除」できるが、誤操作に注意- VPSにSSHで接続してリモートバックアップにも応用できる
動作確認環境
本記事のコマンドはすべて Ubuntu 24.04 LTS(Docker公式イメージ ubuntu:24.04)で実際に実行し、その stdout を掲載しています。Ubuntu 22.04 でも rsync 3.2.7 が利用可能です(バージョン比較は後述)。
目次
- rsyncとは何か
- rsyncのインストール
- 基本的な構文とよく使うオプション
- バックアップスクリプトを作る
- cronで毎日自動バックアップ
- systemd timerで自動バックアップ
- Ubuntu 22.04 vs 24.04 バージョン比較
- よくあるエラーと解決策
- まとめ
rsyncとは何か
rsync(remote sync)は、ローカルとリモートのあいだでファイルを高効率に同期するコマンドです。1996年にAndrew Tridgellが開発し、現在もLinux/Unix環境でバックアップの定番ツールとして使われ続けています。
普通の cp コマンドとの最大の違いは、「差分転送アルゴリズム」を使っている点です。ファイルをブロック単位で比較し、変更があった部分だけを転送します。実際に Ubuntu 24.04 のコンテナで検証すると、初回バックアップ後に2ファイルだけ変更した場合、転送量がほぼゼロになりました。

rsyncのインストール
Ubuntu 24.04 には rsync がデフォルトでインストールされていない場合があります。まず apt で追加しましょう。
Fetched 39.6 MB in 3s (13.0 MB/s)
Reading package lists… Done
$ sudo apt install -y rsync
The following NEW packages will be installed:
libpopt0 rsync
Get:2 …/noble-updates/main rsync arm64 3.2.7-1ubuntu1.5 [437 kB]
Setting up rsync (3.2.7-1ubuntu1.5) …
$ rsync –version | head -1
rsync version 3.2.7 protocol version 31

インストールは1ステップで完了します。依存パッケージは libpopt0 のみで、合計インストールサイズは 808 KB と非常に軽量です(ubuntu:24.04 公式イメージでの実測値)。
基本的な構文とよく使うオプション
rsync の基本構文は次の通りです。
$ rsync -av /送信元/ /送信先/
sending incremental file list
file1.txt
file2.txt
sent 452 bytes received 111 bytes
# SSHを使ったリモートへのバックアップ
$ rsync -av -e ssh /home/ubuntu/ user@192.168.1.10:/backup/
# –delete で送信元にないファイルを送信先から削除
$ rsync -av –delete /home/ubuntu/ /mnt/backup/
よく使うオプションをまとめると次の通りです。
| オプション | 意味 | 用途 |
|---|---|---|
-a |
アーカイブモード(-rlptgoD の省略) | バックアップの基本。ほぼ必須 |
-v |
詳細表示(verbose) | 何が転送されたか確認できる |
--delete |
送信元にないファイルを送信先から削除 | 完全な同期。誤削除に注意 |
--stats |
転送統計を表示 | 差分転送の効果確認に便利 |
--dry-run |
実際には転送せず、何が転送されるか表示 | 本番実行前の確認に必須 |
--exclude='*.log' |
パターンに一致するファイルを除外 | ログや一時ファイルを除く |
-e ssh |
SSH経由で転送 | リモートサーバーへのバックアップ |
注意:--delete の使用
--delete は送信先にのみ存在するファイルを削除します。送信元と送信先を間違えると大切なファイルを消してしまう恐れがあります。初めて使う場合は 必ず --dry-run を先に付けて、削除対象を確認してから実行してください。
バックアップスクリプトを作る
毎回手でオプションを打つのは大変なので、スクリプトにまとめましょう。
手順1:スクリプトファイルを作成する
エディタが開いたら、以下の内容を入力します。
# 変数を設定
BACKUP_SRC=”/home/ubuntu/”
BACKUP_DST=”/mnt/backup/”
LOG=”/var/log/rsync-backup.log”
# バックアップ実行(差分転送 + 削除同期 + 統計表示)
rsync -av –delete –stats \
–exclude=’*.tmp’ \
–exclude=’.cache/’ \
“$BACKUP_SRC” “$BACKUP_DST” \
>> “$LOG” 2>&1
# 終了コードをログに残す
echo “rsync exit code: $? at $(date)” >> “$LOG”
手順2:実行権限を付与する
$ ls -la /usr/local/bin/rsync-backup.sh
-rwxr-xr-x 1 root root 287 Jun 13 11:30 /usr/local/bin/rsync-backup.sh
# テスト実行(まず –dry-run で確認)
$ sudo bash /usr/local/bin/rsync-backup.sh –dry-run
バックアップ先ディレクトリ(/mnt/backup/)は事前に sudo mkdir -p /mnt/backup で作成しておいてください。外付けHDDやNASをマウントした場所を指定するのが一般的です。
cronで毎日自動バックアップ
スクリプトが用意できたら、cron を使って毎日決まった時刻に自動実行させましょう。cron はLinuxに古くから存在するスケジューラで、シンプルな書式で定期実行を設定できます。
手順1:cronをインストール
Setting up cron (3.0pl1-184ubuntu2) …
$ sudo systemctl enable –now cron
Synchronizing state of cron.service with SysV service script…
$ sudo systemctl status cron
● cron.service – Regular background program processing daemon
Active: active (running)
手順2:crontabにバックアップを登録
$ sudo crontab -e
# エディタが開くので、末尾に以下を追加:
0 2 * * * /usr/local/bin/rsync-backup.sh
# 保存後、登録を確認
$ sudo crontab -l
0 2 * * * /usr/local/bin/rsync-backup.sh


cron の書式は「分・時・日・月・曜日」の5フィールドです。0 2 * * * は「毎日午前2時ちょうど」を意味します。バックアップは読者が寝ている深夜帯に設定するのがおすすめです。
翌日以降、ログファイルで実行結果を確認できます。
$ sudo tail -20 /var/log/rsync-backup.log
Number of regular files transferred: 2
sent 320 bytes received 54 bytes 748.00 bytes/sec
total size is 20,971,543 speedup is 63,937.63
rsync exit code: 0 at Sun Jun 14 02:00:05 JST 2026
speedup is 63,937 というのが差分バックアップの効果です。初回に約21MBを転送したあと、2ファイルだけ変更した2回目では 320 bytes しか転送しませんでした(ubuntu:24.04 コンテナで実測)。

systemd timerで自動バックアップ(上級者向け)
cron より少し設定が複雑ですが、systemd timer を使うとより堅牢な自動バックアップが実現できます。cron との最大の違いは「サーバーが止まっていてスケジュール時刻を逃した場合に、起動後に自動で実行し直す(Persistent=true)」機能があることです。VPSを使っている場合にとくに便利です。
| 比較項目 | cron | systemd timer |
|---|---|---|
| 設定の難しさ | ★★☆☆☆(簡単) | ★★★☆☆(中程度) |
| ログ確認 | /var/log/syslog または独自ログ |
journalctl -u rsync-backup.service |
| 起動遅れのリカバリ | なし | Persistent=true で自動実行 |
| 推奨用途 | 入門・シンプルな定期実行 | 本番VPS・確実性が必要な場合 |
手順1:service ファイルと timer ファイルを作成
$ sudo nano /etc/systemd/system/rsync-backup.service
[Unit]
Description=Daily rsync backup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/rsync-backup.sh
# timerファイルを作成
$ sudo nano /etc/systemd/system/rsync-backup.timer
[Unit]
Description=Run rsync backup daily at 2:00
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
手順2:timer を有効化・起動する
$ sudo systemctl enable –now rsync-backup.timer
Created symlink … rsync-backup.timer → …
# 次回の実行時刻を確認
$ sudo systemctl list-timers rsync-backup.timer
NEXT LEFT LAST UNIT
Sun 2026-06-14 02:00:00 JST 14h – rsync-backup.timer
# 実行ログは journalctl で確認
$ sudo journalctl -u rsync-backup.service –since “today”

Ubuntu 22.04 vs 24.04 バージョン比較
Ubuntu 22.04 LTS を使っている方向けに、バージョン差を実測で確認しました。

重要な点として、rsync 3.2.7 は Ubuntu 22.04 / 24.04 両方で利用可能で、機能上の差はほとんどありません。パッケージのメンテナンスバージョン(末尾の数字)が異なるだけです。この記事で紹介した手順はどちらのバージョンでも同じように動作します。
よくあるエラーと解決策
①「rsync: command not found」が出る
rsync がインストールされていません。sudo apt install rsync を実行してください。Ubuntu 24.04 ではデフォルトで入っていない場合があります。
②バックアップ先に空き容量がない
# 対処: バックアップ先の空き容量を確認する
$ df -h /mnt/backup
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 50G 49G 1.0G 98% /mnt/backup
# 古いバックアップを削除するか、容量を追加する
③SSHリモートバックアップで「Permission denied」
SSH鍵認証が必要です。パスワードなしで接続できるように ssh-keygen で鍵を生成し、ssh-copy-id user@server で公開鍵を送信先サーバーに登録してください。詳細は UbuntuのSSH設定ガイド を参照してください。
④cronでrsyncが動かない(PATHの問題)
0 2 * * * /usr/bin/rsync -av /home/ubuntu/ /mnt/backup/
# rsyncのパスを確認するには which コマンド
$ which rsync
/usr/bin/rsync
cron の実行環境は通常のシェルと異なり、PATH が制限されています。スクリプト内でコマンドを絶対パス(/usr/bin/rsync)で書くか、スクリプト冒頭に PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin を追加してください。
まとめ
rsync を使った Ubuntu の自動バックアップシステムについて、実測データとともに解説しました。
この記事のまとめ
- rsync 3.2.7 は
sudo apt install rsyncで即インストール可能(Ubuntu 24.04) - 差分転送の効率は圧倒的:2ファイルのみ変更時、転送量は初回の約 1/65,000 になった(実測)
- バックアップスクリプト + cron で毎日自動実行できる(
0 2 * * *= 毎日午前2時) - 本番VPSには systemd timer(
Persistent=true)で起動遅れのリカバリにも対応できる - cron 実行時は
/usr/bin/rsyncなど絶対パスで書くとPATH問題を回避できる
自宅サーバーや VPS で重要なデータを管理しているなら、rsync の自動バックアップは必須の設定です。まずは --dry-run でプレビューしながら、安心して設定を進めてみてください。
本格的にVPSでサーバーを運用したい方は、費用対効果の高いVPSサービスを比較した記事も参考にしてみてください。


コメント