rsync:差分バックアップの定番

rsysnc

rsyncコマンドについての概要と詳細

rsyncとは

rsyncは、差分コピー機能に優れたファイル同期・バックアップツールです。ローカル・リモート間でのデータ転送に対応し、変更された部分だけを効率的にコピーするため、高速かつ帯域の節約が可能です。
主にバックアップ、ディレクトリのミラーリング、サーバ間の同期処理などに広く利用されています。

rsyncの主な特徴

  • 変更・追加部分のみをコピーする「差分転送」
  • リモート同期時はSSHを利用した暗号化通信が可能
  • ファイルのタイムスタンプ・所有者・パーミッションも保持
  • 削除や除外など多彩なオプションで柔軟な運用が可能
  • スクリプトやcronとの相性も良く、自動化しやすい

インストール方法

Debian/Ubuntu系
$ sudo apt install rsync

Fedora系
$ sudo dnf install rsync

基本的な使い方

ローカルディレクトリ間の同期

$ rsync -av /home/user/source/ /home/user/backup/
  • -a:アーカイブモード(タイムスタンプ・パーミッションなどを保持)
  • -v:詳細出力

リモートホストとの同期(SSH)

$ rsync -av -e ssh /home/user/source/ user@remote:/backup/

同期先で削除されたファイルをローカルでも削除

$ rsync -av --delete /home/user/source/ /home/user/backup/

特定のファイルを除外する

$ rsync -av --exclude "*.log" /home/user/source/ /home/user/backup/

rsyncの代表的なオプション

  • -a:アーカイブモード(複数オプションをまとめたもの)
  • -v:進行状況を表示
  • -z:転送中に圧縮
  • --delete:同期元に無いファイルを削除
  • --exclude:指定パターンのファイル・ディレクトリを除外
  • -n:テストモード(実際には実行せず動作確認)

活用例

ホームディレクトリの定期バックアップ(cronと併用)

$ crontab -e
0 2 * * * rsync -a --delete /home/user/ /mnt/backup/user/

差分バックアップスクリプト例

#!/bin/bash
SRC="/home/user/"
DEST="/mnt/backup/user/"
rsync -a --delete "$SRC" "$DEST"

まとめ

rsyncは、Linuxでのバックアップ・同期処理の定番ツールとして広く利用されています。差分のみを効率よく転送でき、ネットワーク帯域の節約やバックアップの高速化に優れています。ローカル環境はもちろん、SSHを使ったリモートバックアップにも対応しており、柔軟性と信頼性の高さが特長です。
日常的なデータ保護から、システム間の同期運用まで、あらゆるシーンで活躍するツールです。