rsync – 高速で効率的なファイル転送・同期コマンド

転送・同期

rsync コマンドは、ファイルやディレクトリを 差分転送 により効率的にコピー・同期できるツールです。
ローカル間のコピーだけでなく、SSH を利用してリモートサーバとの同期も可能で、バックアップやデプロイ作業に広く使われます。

構文(Syntax)

rsync [オプション] [SOURCE] [DEST]
rsync [オプション] [USER@]HOST:SRC [DEST]
rsync [オプション] [SOURCE] [USER@]HOST:DEST

主なオプション一覧

オプション説明使用例
-aアーカイブモード(再帰コピー・属性保持)rsync -a src/ dest/
-v詳細情報を表示rsync -av src/ dest/
-zデータを圧縮して転送rsync -avz src/ user@host:/backup/
-P進行状況を表示し、中断時に再開可能rsync -avP file.iso user@host:/tmp/
--delete転送元にないファイルを削除(同期用)rsync -av --delete src/ dest/
-e "ssh -p PORT"SSH のポートを指定rsync -av -e "ssh -p 2222" src/ user@host:/backup/
--exclude=PATTERN除外するファイルやディレクトリを指定rsync -av --exclude '*.log' src/ dest/
--include=PATTERN特定のファイルを含めるrsync -av --include '*.txt' src/ dest/
--dry-run実際にコピーせずシミュレーションrsync -av --dry-run src/ dest/

実行例

ローカル間でディレクトリをコピー

rsync -av project/ backup/

出力例:

sending incremental file list
file1.txt
file2.txt

sent 1,024 bytes  received 512 bytes  3,072.00 bytes/sec
total size is 2,048  speedup is 1.50

リモートサーバへコピー(SSH使用)

rsync -avz project/ user@example.com:/var/www/html/

リモートからローカルへコピー

rsync -avz user@example.com:/var/log/ ./logs/

差分コピー(途中で中断しても再開可能)

rsync -avP bigfile.iso user@example.com:/tmp/

除外ルールを指定してコピー

rsync -av --exclude '*.log' project/ backup/

完全同期(不要なファイルを削除)

rsync -av --delete src/ dest/

転送内容をシミュレーション(dry-run)

rsync -av --dry-run src/ dest/

出力例:

sending incremental file list
file1.txt
file2.txt

sent 200 bytes  received 50 bytes  500.00 bytes/sec
total size is 1024  speedup is 3.20

エラー例(認証失敗)

rsync -av user@wronghost:/data/ ./backup/

出力例:

ssh: connect to host wronghost port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far)

関連コマンド

  • scp : シンプルなファイルコピー(差分機能なし)
  • sftp : SSH を利用した対話的なファイル転送
  • tar : アーカイブ作成や圧縮
  • cp : ローカルでの単純コピー

備考

  • rsync差分コピー を行うため、2回目以降の転送は非常に高速。
  • SSH を利用するのが一般的で、安全かつ便利にリモートサーバと同期可能。
  • バックアップ用途で --delete を付ける際は、誤削除に注意し --dry-run で確認するのが推奨。
  • Windows 環境では WSL や Cygwin などを通じて利用可能。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント