rsync(remote sync)コマンドは、ファイルやディレクトリを 差分転送 により効率的にコピー・同期できるツールです。
ローカル間のコピーだけでなく、SSH を利用してリモートサーバとの同期も可能で、バックアップやデプロイ作業に広く使われます。
この記事では、初めて rsync を使う人向けに、インストール確認から基本構文、主要オプション、実行例、cp や scp との違い、定期実行での活用方法までをまとめて解説します。
インストール確認・インストール方法
多くの Linux ディストリビューションには rsync が標準でインストールされています。まずはバージョンを確認し、なければインストールします。
# インストール済みか確認
rsync --version
# Debian/Ubuntu 系
sudo apt install rsync
# RHEL/CentOS/Rocky 系
sudo dnf install rsync
# macOS(Homebrew)
brew install rsync
Windows では標準搭載されていないため、WSL(Windows Subsystem for Linux)や Cygwin 経由で利用します。
構文(Syntax)
rsync [オプション] [SOURCE] [DEST]
rsync [オプション] [USER@]HOST:SRC [DEST]
rsync [オプション] [SOURCE] [USER@]HOST:DEST
転送元パスの末尾スラッシュに注意
rsync は転送元パスの末尾に / があるかどうかで挙動が変わります。初心者がつまずきやすいポイントなので、実行前に必ず確認してください。
| コマンド | 結果 |
|---|---|
rsync -av src/ dest/ | src の中身が dest/ 直下にコピーされる |
rsync -av src dest/ | src ディレクトリごと dest/src/ としてコピーされる |
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-a | アーカイブモード(再帰コピー・属性保持) | rsync -a src/ dest/ |
-v | 詳細情報を表示 | rsync -av src/ dest/ |
-z | データを圧縮して転送 | rsync -avz src/ user@host:/backup/ |
-r | ディレクトリを再帰的にコピー(-a に含まれる) | rsync -r src/ dest/ |
-h | ファイルサイズを人が読みやすい単位で表示 | rsync -avh src/ dest/ |
-P | 進行状況を表示し、中断時に再開可能 | rsync -avP file.iso user@host:/tmp/ |
--delete | 転送元にないファイルを削除(同期用) | rsync -av --delete src/ dest/ |
-e "ssh -p PORT" | SSH のポートを指定 | rsync -av -e "ssh -p 2222" src/ user@host:/backup/ |
--exclude=PATTERN | 除外するファイルやディレクトリを指定 | rsync -av --exclude '*.log' src/ dest/ |
--include=PATTERN | 特定のファイルを含める | rsync -av --include '*.txt' src/ dest/ |
--dry-run | 実際にコピーせずシミュレーション | rsync -av --dry-run src/ dest/ |
--log-file=PATH | 転送結果をログファイルに記録 | rsync -av --log-file=sync.log src/ dest/ |
cp・scp・tarとの違い
同じファイルコピー系コマンドでも、rsync と cp・scp・tar では得意分野が異なります。用途に合わせて使い分けましょう。
| コマンド | 差分転送 | リモート対応 | 主な用途 |
|---|---|---|---|
rsync | ○(2回目以降は高速) | ○(SSH経由) | バックアップ、リモート同期、デプロイ |
cp | ×(毎回全コピー) | ×(ローカルのみ) | ローカルでの単純コピー |
scp | ×(毎回全コピー) | ○(SSH経由) | 1回限りのリモート転送 |
tar | × | △(パイプ経由で可能) | アーカイブ化・圧縮 |
実行例
ローカル間でディレクトリをコピー
rsync -av project/ backup/
出力例:
sending incremental file list
file1.txt
file2.txt
sent 1,024 bytes received 512 bytes 3,072.00 bytes/sec
total size is 2,048 speedup is 1.50
リモートサーバへコピー(SSH使用)
rsync -avz project/ user@example.com:/var/www/html/
リモートからローカルへコピー
rsync -avz user@example.com:/var/log/ ./logs/
差分コピー(途中で中断しても再開可能)
rsync -avP bigfile.iso user@example.com:/tmp/
除外ルールを指定してコピー
rsync -av --exclude '*.log' project/ backup/
完全同期(不要なファイルを削除)
rsync -av --delete src/ dest/
転送内容をシミュレーション(dry-run)
rsync -av --dry-run src/ dest/
出力例:
sending incremental file list
file1.txt
file2.txt
sent 200 bytes received 50 bytes 500.00 bytes/sec
total size is 1024 speedup is 3.20
エラー例(認証失敗)
rsync -av user@wronghost:/data/ ./backup/
出力例:
ssh: connect to host wronghost port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far)
cronで定期的に自動同期する
rsync は cron と組み合わせることで、無人の定期バックアップを構築できます。SSH 鍵認証を設定しておけば、パスワード入力なしで自動実行が可能です。
# 毎日午前3時にリモートサーバへバックアップ
0 3 * * * rsync -avz --delete /var/www/html/ user@example.com:/backup/html/ >> /var/log/rsync-backup.log 2>&1
世代管理を伴う本格的なバックアップ運用や、SSH 鍵認証の設定手順は次の記事で詳しく解説しています。
- 定期バックアップ講座|rsync×世代管理×復元テスト
- rsync over SSHとは?SSH経由のファイル同期・鍵認証・自動バックアップを解説
- 増分&差分に強い自動バックアップ|rsyncオプションとcron実例
よくある質問
rsyncとは何の略ですか?
「remote sync(リモート同期)」の略です。ファイルの差分だけを検出して転送するため、2回目以降の同期が高速になります。
rsync -a や -avz はどういう意味ですか?
-a はアーカイブモードで、ディレクトリを再帰的にコピーしつつ、パーミッションやタイムスタンプなどの属性を保持します。-avz はこれに詳細表示(-v)と圧縮転送(-z)を組み合わせたもので、リモート転送時によく使われる定番の組み合わせです。
rsync --dry-run はどう使いますか?
実際にはファイルをコピー・削除せず、実行結果だけをシミュレーションするオプションです。特に --delete を使う前には --dry-run を付けて対象ファイルを確認し、意図しない削除を防ぐことを推奨します。
manページで詳細を確認するには?
man rsync を実行すると、全オプションの説明を含む公式マニュアルをターミナル上で確認できます。
関連コマンド
scp: シンプルなファイルコピー(差分機能なし)sftp: SSH を利用した対話的なファイル転送tar: アーカイブ作成や圧縮cp: ローカルでの単純コピーssh: リモートサーバへの接続
関連記事
- リモートサーバーにフォルダをまとめて転送する方法|初心者向けscpとrsync入門
- scp を使ってきた人向け|今後は SFTP・rsync を選ぶ理由
- SSHの安全転送:scp・rsync・SFTPの最適解|chrootと限定ユーザーの作り方
備考
rsyncは 差分コピー を行うため、2回目以降の転送は非常に高速。- SSH を利用するのが一般的で、安全かつ便利にリモートサーバと同期可能。
- バックアップ用途で
--deleteを付ける際は、誤削除に注意し--dry-runで確認するのが推奨。 - Windows 環境では WSL や Cygwin などを通じて利用可能。
参考
- manページ: man7.org rsync(1)
- Rsync公式: https://rsync.samba.org/

コメント