rsync 高速ファイル同期
ローカル間やリモート間でファイルやディレクトリを効率的に同期(コピー)するための強力なコマンド rsync の備忘録。
単なるコピーコマンド(cp)と異なり、変更された差分だけを転送するため、非常に高速でネットワークの負荷も抑えられます。
よく使う最強の組み合わせ: -avzP
日常的によく使うオプションの組み合わせです。これさえ覚えておけば、大抵のディレクトリ同期やバックアップは安全かつ分かりやすく実行できます。
# ローカルディレクトリからリモートへの同期例
rsync -avzP /path/to/source/ user@remote:/path/to/destination/
オプションの解説
アーカイブモード。ディレクトリを再帰的にコピーし、シンボリックリンク、パーミッション、所有者情報、タイムスタンプをすべてそのまま保持します。バックアップの基本です。
実行中の詳細な情報を画面に表示します。何がコピーされているか視覚的に確認できます。
転送中にデータを圧縮します。ネットワーク経由の通信(リモートサーバーへの転送など)において、転送量を減らし高速化に貢献します。
このオプションは2つの機能を持っています。1つは --progress で、転送中のファイルのプログレスバー(進捗状況)を表示します。もう1つは
--partial で、通信が途切れて転送が中断した場合でも、途中まで送ったファイルを消さずに保持し、次回そこから再開(レジューム)できるようにします。
ディレクトリ指定時の「/」の注意点
rsyncを使用する際、転送元(Source)のディレクトリの末尾にスラッシュ / を付けるかどうかで挙動が大きく変わります。ここは非常に間違えやすいポイントです。
❌ スラッシュなし: dir
rsync -avzP src dest/
src というディレクトリそのものを dest/ の中にコピーします。
結果: dest/src/ファイルたち になります。
✅ スラッシュあり: dir/
rsync -avzP src/ dest/
src ディレクトリの中身を dest/ の中にコピーします(中身をぶちまけるイメージ)。
結果: dest/ファイルたち になります。
特定のフォルダをまるごと同期させたい場合は、転送先のディレクトリ指定にも注意しつつ、「中身を送るのか」「外枠ごと送るのか」を意識してスラッシュを使い分けます。