ホーム > 圧縮・アーカイブ > rsync

rsync コマンド完全攻略

Linuxでファイルとディレクトリを効率的に同期し、バックアップする `rsync` コマンドに関するガイドです。ローカル、リモートシステム間での増分コピーおよび同期を安全かつ迅速に行うことができます。

主なオプション

`rsync` コマンドのさまざまなオプションを組み合わせてファイル同期およびバックアップ作業を設定してみましょう。

1. 基本同期

2. 転送モードとオプション

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`rsync` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

rsyncの動作原理

`rsync`は『デルタエンコーディング』アルゴリズムを使用して、ファイルの変更された部分のみを転送することでネットワーク帯域幅を効率的に使用します。これにより、大容量ファイルや多くのファイルを同期する際に非常に迅速かつ効率的です。

rsyncの主な特徴

`rsync`が他のコピーツールと差別化される核心機能です。

  • デルタ転送 (Delta Transfer): ソースと宛先ファイル間の違いだけを識別して転送します。ファイル全体を再コピーする代わりに変更されたブロックだけを転送し、効率を最大化します。
  • 増分バックアップ (Incremental Backup): 前回のバックアップ以降に変更されたファイルだけをコピーするため、毎回全体バックアップを実行する必要がなく、時間とスペースを節約します。
  • リモート同期: SSHを含むさまざまなリモートシェルを介して暗号化されたチャネルでファイルを転送できるため、セキュリティが高まります。
  • ファイル属性保持: アーカイブモード(`-a`)を使用すると、権限、所有者、グループ、タイムスタンプ、シンボリックリンクなどファイルのすべての属性をそのまま保持します。

Trailing Slash (パスの最後のスラッシュ) の重要性

`rsync`でソースパスの最後にスラッシュ(`/`)を付けるかどうかは非常に重要です。 - `source/`: `source` ディレクトリ **内の内容**をコピーします。(例: `cp source/* dest/` に類似) - `source`: `source` ディレクトリ **自体**をコピーします。(例: `cp -r source dest/` に類似) この違いを理解していないと、予期しない結果が生じる可能性があります。

使用例

`rsync` コマンドの実用的な使用例を通じてファイル同期およびバックアップ戦略を立ててみましょう。

ローカルディレクトリの同期 (アーカイブモード)

rsync -av /path/to/source_dir/ /path/to/destination_dir/

`source_dir`の内容を`destination_dir`に同期します。権限、時間などすべての属性を保持します。`source_dir`にないファイルは`destination_dir`で削除されません。

リモートサーバーへのディレクトリミラーリング (バックアップ)

rsync -avz --delete --progress /local/my_data/ user@remote_host:/remote/backup/

ローカルの`my_data`ディレクトリの内容をリモートサーバーの`/backup/`ディレクトリにミラーリングします。元にないファイルは宛先でも削除されます。圧縮を使用し、進捗率を表示します。

リモートサーバーからローカルに特定ファイルのみを取得

rsync -avz --include='*.log' --exclude='*' user@remote_host:/var/log/ /tmp/logs/

リモートサーバーの`/var/log/`ディレクトリから`.log`ファイルのみをローカルの`/tmp/logs/`ディレクトリに取得します。

実際に実行せずに変更内容を事前確認

rsync -avz --delete --dry-run /path/to/source/ /path/to/destination/

実際にファイルを転送または削除せず、どのような変更が行われるかを事前に表示します。重要な同期前には必ず使用することをお勧めします。

別のSSHポートを使用して同期

rsync -avz -e "ssh -p 2222" /local/src/ user@remote_host:/remote/dest/

デフォルトのSSHポート(22)ではなく、2222ポートを使用してリモートサーバーとファイルを同期します。


同じカテゴリのコマンド