rsync -avz の使い方とポイント完全解説

—

by

in

はじめに

rsync はネットワーク越しやローカルのディレクトリ間で、ファイルやディレクトリを高速に同期できるツールです。特に「-avz」オプションの組み合わせは、最もよく使われる定番パターンです。本記事では -avz の意味と、実務で役立つ活用例を詳しく解説します。

-avz オプションの意味

  • -a(archive): 再帰的にコピーし、パーミッション・所有者・タイムスタンプ・シンボリックリンクなどをできるだけ正確に保持します。
  • -v(verbose): 転送中のファイル名を表示し、進行状況を把握しやすくします。
  • -z(compress): データを転送する際に圧縮を行い、特に帯域が狭い環境で速度向上が期待できます。

基本的な使用例

ローカルの /home/user/data/ ディレクトリをリモートサーバ example.com の /backup/ に同期する例です。

rsync -avz /home/user/data/ user@example.com:/backup/

ポイントは、ソースディレクトリの末尾にスラッシュ / を付けるかどうかです。末尾にスラッシュがあると「ディレクトリ内部の内容だけ」を同期し、付けないと「ディレクトリごと」を同期します。

ローカル同士のコピー

ネットワークを介さずに同一マシン上でディレクトリをコピーしたい場合も、-z は無駄にならないように自動で無効化されます。

rsync -av /var/www/ /mnt/backup/www/

SSH のポート番号を指定する

デフォルトの SSH ポート 22 以外を使う場合は、-e オプションで ssh コマンドを指定します。

rsync -avz -e "ssh -p 2222" /data/ user@example.com:/data/

実務で役立つテクニック

  • 削除オプション(--delete)を併用すると、宛先に存在しなくなったファイルを自動で削除できます。
  • 除外リスト(--exclude)で特定のファイルやディレクトリを同期対象から外せます。
  • 進捗表示(--progress)を付けると、大きなファイルの転送状況が分かりやすくなります。

例: バックアップ対象から .git ディレクトリと tmp/ を除外し、削除も同期させる。

rsync -avz --delete \
    --exclude='.git/' \
    --exclude='tmp/' \
    /home/user/project/ \
    user@example.com:/backup/project/

まとめ

rsync の -avz は「アーカイブ」「詳細表示」「圧縮」の三つの要素を同時に有効化し、ほとんどのバックアップやミラーリング作業に適しています。オプションを組み合わせることで、削除や除外、カスタム SSH 設定など、様々なシーンに柔軟に対応できます。是非、日常のファイル同期作業に取り入れてみてください。