rsync コマンド生成(-a --delete --exclude SSH)

送信元/宛先・-a -v -z -h -P・--delete・--exclude/--include・-e ssh・--bwlimit・--dry-runの各条件を選ぶだけでrsyncコマンドを1行生成。末尾スラッシュの違いも解説します。

rsync -avh ./local/dir/ user@remote.example.com:/var/backup/dir/

生成された条件の意味

    送信元パス末尾のスラッシュの違い(rsync(1)の仕様): dir/(末尾に / あり)を送信元に指定すると「dir の中身」が宛先の直下にコピーされ、宛先に dir という階層は作られません。一方 dir(末尾に / なし)を指定すると「dir というディレクトリ自体」が宛先の中にコピーされ、宛先側に新しく dir/ が作られます。宛先パスの末尾スラッシュの有無は結果に影響しません。

    --include / --exclude の順序: rsync のフィルタルールは先に書かれたものから順に評価され、最初にマッチしたルールが適用されます。特定のサブディレクトリだけ残しつつ他を除外したい場合は、--include を --exclude より前に置く必要があります(このツールは常にその順で生成します)。

    使い方

    1. 送信元・宛先のパス(ローカルパス、または user@host:path のリモート指定)を入力する。
    2. -a や -v、--delete、--exclude などのオプションを選ぶと rsync コマンドが自動で組み上がる。
    3. SSH のポート変更や帯域制限が必要な場合は該当欄に数値を入力する。
    4. 「コマンドをコピー」で結果を貼り付けて実行できる。まず -n(--dry-run)で影響範囲を確認するのが安全。

    仕組み・計算式

    rsync(1) の仕様では、-a(archive)は -rlptgoD(再帰・シンボリックリンク・パーミッション・更新日時・グループ・所有者・デバイス)をまとめて指定したものに相当し、属性を保持したいバックアップ用途の基本形になる。--exclude と --include はどちらも「フィルタルール」で、rsync は設定順に上から評価して最初に一致したルールを適用する。あるサブディレクトリだけ除外対象から外したい場合は、対応する --include を、打ち消してしまう --exclude より前に書く必要がある。

    送信元パス末尾の「/」の有無による違いも rsync(1) に明記された仕様で、/ を付けると「ディレクトリの中身」が同期対象になり宛先に新しい階層は作られないが、/ を付けないと「ディレクトリそのもの」が宛先の中にコピーされ、同名ディレクトリが新規に作られる。

    現場の落とし穴:--delete は送信元に存在しないファイルを宛先から削除して完全一致させるが、送信元パスの指定ミス(誤ったディレクトリなど)と組み合わさると宛先の大量のファイルを意図せず削除する事故につながる。rsync(1) でも -n(--dry-run)との併用が事前確認の手段として案内されており、本番実行前に必ず --delete を含めたまま --dry-run で削除対象を確認する運用が推奨される。

    よくある質問

    Q. -z(圧縮)は常に付けたほうがよいですか?

    A. 帯域が狭い回線や圧縮の効きやすいテキストでは有効だが、圧縮済みの画像・動画や高速なLAN内転送ではCPU負荷が増えるだけで逆効果になることがある。

    Q. --exclude で除外したファイルを一部だけ復活させたい場合は?

    A. --include で復活させたいパターンを指定し、必ずそれに対応する --exclude より前に置く。順序が逆だと除外されたままになる。

    Q. SSH のデフォルトと異なるポートを使う場合は?

    A. -e "ssh -p ポート番号" のように SSH 起動コマンド自体を -e オプションで上書きする。秘密鍵の指定なども同様にこの文字列に追加できる。

    関連ツール

    最終更新・根拠の確認日: 2026-09-10 · カテゴリ: Linux・サーバー