Linux rsyncコマンド: オプションと使用例

公正取引委員会の広告文 Ver 3.1
公正取引委員会の広告文 Ver 3.2(モバイル専用)
テスト環境RHEL系AlmaLinux 9.8rootアカウント2026-10-07 確認

サーバー2台のフォルダーを揃えるために毎回全体をコピーし直すと、変わったファイルが1つでも転送量はフォルダー全体のままです。 rsyncコマンドはremote syncの略で、元と先を比べて変わったファイルだけを送り、ローカルのフォルダー間でもSSHでつないだサーバー間でも同じように動作します。この記事では、基本的な使い方とオプション、SSHとrsyncデーモンという2つの接続方式の例をまとめました。

この記事の出力はAlmaLinux 9.8のrsync 3.2.7で取得したものです。インストールされていなければ、パッケージマネージャーで入れます。

# RHEL系
dnf -y install rsync
# Debian系
apt -y install rsync

✅ 基本的な使い方

基本的な使い方は次のとおりです。

rsync -オプション コピー元 コピー先

cpコマンドと同じく、元を先に、先を後に書きます。元の末尾にスラッシュ[/]を付けるとフォルダーの中身だけが先に入り、付けなければフォルダーごと入ります。

~]# rsync -av www/ backup/
sending incremental file list
index.html
img/
img/logo.png
~]# rsync -av www backup/
sending incremental file list
www/
www/index.html
www/img/
www/img/logo.png

同じコマンドをもう一度実行するとファイル一覧は空になり、sentのバイト数も数百バイトに減ります。サイズと更新時刻が同じファイルはスキップされるためです。

~]# rsync -av www/ backup/
sending incremental file list

sent 166 bytes  received 13 bytes  358.00 bytes/sec
total size is 3,015  speedup is 16.84

-aなしで-rだけを使うと更新時刻が保存されず、次の実行で同じファイルをまた送ることになります。フォルダーを同期するときは-aを基本として付けます。

-nオプションは転送せずに変わるファイルだけを表示し、結果の末尾に[(DRY RUN)]が付きます。-⁠-deleteのように先のファイルを消すオプションは、-nで先に確認してから実行します。

~]# rsync -avn --delete www/ backup/
sending incremental file list
deleting old.bak
index.html

sent 188 bytes  received 39 bytes  454.00 bytes/sec
total size is 3,013  speedup is 13.27 (DRY RUN)

✅ rsyncコマンドのオプション & シミュレーター

オプション説明
-a--archiveサブディレクトリまでコピーし、権限・所有者・更新時刻・シンボリックリンクを保持 (-rlptgoDと同じ)
-v--verbose転送したファイル名と転送量を表示
-z--compress転送中にファイルデータを圧縮
-r--recursiveサブディレクトリまでコピー (-aに含まれる)
-t--times更新時刻を保持 (-aに含まれる)。次の実行でスキップするファイルを決める基準
-n--dry-run転送せずに変わるファイルだけを表示し、末尾に(DRY RUN)を付ける
-u--update先のほうが新しいファイルはスキップ
-h--human-readableバイト数をK・M・G単位で表示
-P--partial --progressと同じ。ファイルごとに進捗を表示し、中断した転送を再開
-i--itemize-changesファイルごとに変わった項目を記号で表示>f+++++++++ 新規ファイル · >f.st.⁠.⁠.⁠.⁠.⁠. サイズ・時刻の変更 · *deleting 削除
-e--rsh=COMMANDリモートシェルを指定-e 'ssh -p 2222 -i /root/.ssh/key.pem'
--delete元にないファイルを先から削除 (-rまたは-aが必要)
--exclude=PATTERNパターンに一致するファイル・ディレクトリを除外--exclude '*.tmp' --exclude 'cache/'
--include=PATTERN--excludeより前に置き、そのパターンだけを除外から外す
--max-size=SIZE指定サイズより大きいファイルは転送しない (--min-sizeは小さいファイル)--max-size=3M --min-size=10k
--bwlimit=RATE転送速度を制限、単位はKiB/s
--statsファイル数・転送量の統計を表示
rsyncコマンド シミュレーターrsync 3.2.7
[root@server work]#
ブラウザの中だけで動作し、実際のファイルには触れません。wwwフォルダーが元、backupフォルダーが前回のバックアップです。rsyncのオプションを変えながら入力し、ll、cat、diffで結果を確認してみてください。リモートアドレス(user@host:パス)は書式だけ受け付け、接続はしません。変更した内容は[最初から]を押すと元に戻ります。キーボードの↑↓で前に使ったコマンドを呼び出せ、uknew help と入力すると使えるコマンドが表示されます。

✅ 接続方式: SSHとrsyncデーモン

リモートサーバーと同期する接続方式は2つです。ホストの後ろのコロン1つ[:]はSSHを経由し、コロン2つ[::]は873番ポートのrsyncデーモンに直接つなぎます。

区分SSH方式 (:)rsyncデーモン方式 (::)
接続形式rsync -オプション user@host:/パス /ローカルパスrsync -オプション host::モジュール/パス /ローカルパス
ポートSSHポート (既定は22)873
暗号化SSHで暗号化暗号化なし
認証SSH鍵またはパスワードrsyncd.confのhosts allow、任意でアカウント・パスワード
サーバー側の設定なし (SSHで接続できればそのまま使える)rsync-daemonのインストール、/etc/rsyncd.conf、873番ポートの開放
用途サーバー間のバックアップ・配備 (基本の選択)SSHアカウントを渡さない内部ネットワークのミラーリング

🔲 SSH方式

SSHで接続できるサーバーなら、サーバー側の設定なしにそのまま使えます。ポートが違う場合や鍵ファイルを使う場合は、-eオプションにsshコマンドをそのまま入れます。

# ローカル → リモート
rsync -avz /home/2server_data/ root@192.168.45.239:/home/1server_data/
# リモート → ローカル
rsync -avz root@192.168.45.239:/home/1server_data/html_Remote /home/2server_data
# SSHポート・鍵ファイルを指定
rsync -avz -e 'ssh -p 2222 -i /root/.ssh/key.pem' root@192.168.45.239:/home/1server_data/ /home/2server_data
rsyncコマンド_リモートからローカルへ実行_結果

特定のファイルやディレクトリを外すには、-⁠-excludeをパターンごとに1つずつ付けるか、波かっこでまとめて一度に書きます。

rsync -avz --exclude 'html_Remote_Excertion' --exclude 'Exception_File' root@192.168.45.239:/home/1server_data/ /home/2server_data
rsync -avz --exclude={'html_Remote_excertion/*','Exception_File'} root@192.168.45.239:/home/1server_data/ /home/2server_data
rsyncコマンド_リモートからローカル_特定のファイル・ディレクトリを除外

🔲 rsyncデーモン方式

rsyncデーモンはSSHアカウントなしに873番ポートでモジュール単位のアクセスを許可します。通信は暗号化されないため、同じ内部ネットワークのサーバー間で使います。

AlmaLinux 9ではrsync-daemonパッケージをインストールしてサービスを起動します。firewalldを使うサーバーなら873番ポートを開け、クラウドサーバーならコンソールのファイアウォールで開けます。RHEL 8以前で使っていたxinetd方式は9ではなくなりました。

dnf -y install rsync-daemon
systemctl enable --now rsyncd
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reload

設定ファイル[/etc/rsyncd.conf]にモジュール名とパス、許可するホストを書きます。read onlyをyesにすると、リモートからは受け取るだけになります。

[myhome]
path = /home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.45.182
max connections = 3
timeout = 30

リモート側でホストの後ろにコロン2つだけを書くとモジュール一覧が、モジュール名まで書くとその中のファイル一覧が表示されます。

~]# rsync 192.168.45.239::
myhome
home
~]# rsync 192.168.45.239::myhome
drwxr-xr-x          4,096 2025/06/12 22:14:39 .
drwxr-xr-x          4,096 2025/06/12 22:21:10 1server_data
drwxr-xr-x          4,096 2025/06/12 22:14:39 2server_data

コピーは[ホスト::モジュール/パス]の形式で受け取ります。-⁠-deleteは元にないファイルを先から消し、-⁠-includeは-⁠-excludeより前に置いた項目だけを除外から外します。

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
./
Exception_File
html_Remote/
html_Remote_Excertion/

sent 58 bytes  received 332 bytes  780.00 bytes/sec
total size is 442  speedup is 1.13
~]# rsync -avz --delete 192.168.45.239::myhome/1server_data/ /home/2server_data/
~]# rsync -avz --include '*.html' --exclude 'exclude.txt' 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsyncコマンド_リモートからローカル_deleteオプションを使用
rsyncコマンド_リモートからローカル_delete・include・excludeオプションを使用

SELinuxが有効なサーバーでは、モジュールパスへのアクセスが[Permission denied (13)]で止まることがあります。テストでは[setenforce 0]でSELinuxを切ったあとに通りました。

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
rsync: change_dir "/1server_data" (in myhome) failed: Permission denied (13)
sent 8 bytes  received 90 bytes  65.33 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1658) [Receiver=3.1.2]

-⁠-bwlimitで転送速度をKiB/s単位で制限し、-Pを付けるとファイルごとの進捗も一緒に見られます。-⁠-max-sizeと-⁠-min-sizeは指定したサイズ範囲のファイルだけを転送します。

rsync -avzP --bwlimit=100 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsync -avz --max-size='3M' --min-size='10k' 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsyncコマンド_リモートからローカル_帯域を100kbに制限し-Pオプションで進捗を確認

ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。

コメントを残す

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

人間であることを証明してください: 8   +   4   =