【完全比較】scp vs rsync ファイル転送はどちらを使うべきか
- 作成日 2026.07.04
- その他
Linux でファイルをネットワーク経由でコピーする代表的な2つのコマンド:
# scp(Secure Copy)
scp file.txt user@server:/path/
# rsync(Remote Sync)
rsync -avz file.txt user@server:/path/
どちらもSSH 経由で安全に転送できます。しかし、
- どっちを使えばいい?
- rsync の
-avzって何? - 中断した転送を続きから再開できる?
- 差分だけ転送したい
- サーバー間のディレクトリを完全同期したい
- 特定ファイルを除外したい
- 「scp は非推奨になった」と聞いたけど本当?
- 帯域制限をかけたい
- 巨大ファイルを何度も転送するのが辛い
など、いざ本格的な運用になると悩ましいポイントが多く出てきます。
さらに、2022年の OpenSSH 9.0 で scp の基盤プロトコルが非推奨となり、scp コマンドは内部的にSFTP を使うように変更されました。この変化を知らずに使っている方も多いはず。
本記事では、scp と rsync のすべての違いと使い分けを、リファレンスとして実用的に整理します。基本コマンド、オプション詳解(-a/-v/-z/--exclude/--delete/--dry-run)、差分転送の仕組み、SSH連携、実践シナリオ、パフォーマンス、トラブルシューティング、FAQまで完全網羅。この1本でファイル転送の悩みが解消されます。
- 1. 結論:3秒で分かる使い分け
- 2. まず押さえる:scp と rsync の本質
- 3. scp の使い方
- 4. rsync の使い方
- 5. -a オプションの詳細
- 6. --dry-run:安全な事前確認
- 7. --exclude / --include:除外パターン
- 8. --delete:削除同期
- 9. --partial / --append:中断からの再開
- 10. SSH との連携
- 11. 圧縮:-z オプション
- 12. 進捗と情報表示
- 13. 帯域制限
- 14. 実践シナリオ
- 15. パフォーマンスチューニング
- 16. トラブルシューティング
- 17. セキュリティ考慮
- 18. よくある質問(FAQ)
- 19. 参考リンク・関連資料
- 20. まとめ
結論:3秒で分かる使い分け
時間がない方向けに、最重要ポイントを先に示します。
早見表
| 観点 | scp | rsync |
|---|---|---|
| 転送方式 | 全ファイル毎回コピー | 差分のみ転送 |
| 中断からの再開 | ❌(最初から) | ✅ |
| 除外パターン | ❌ | ✅ --exclude |
| 削除同期 | ❌ | ✅ --delete |
| 圧縮 | SSH設定依存 | ✅ -z |
| 進捗表示 | 限定的 | ✅ --progress |
| dry-run | ❌ | ✅ --dry-run |
| プロトコル | SSH(旧SCP)→ 現SFTP | rsync 独自(SSH越し) |
| 標準搭載 | ✅(OpenSSH 付属) | ✅(多くのLinux) |
| 学習コスト | 低 | 中 |
| 2026年推奨度 | △(1回コピー限定) | ◎ |
一言で言うと
scp: 一回きりの単純なファイルコピー(数MB〜数百MB程度)rsync: それ以外すべて(大きいファイル、繰り返し、バックアップ、ディレクトリ同期)
迷ったら rsync
現代の Linux 環境では**rsync を第一選択にすべき**。scp と同じことができ、+α で多機能です。
黄金コマンド
# rsync の万能パターン
rsync -avz --progress /source/ user@server:/dest/
-a: アーカイブモード(権限・タイムスタンプ・シンボリックリンク保持)-v: 詳細表示-z: 圧縮転送--progress: 進捗表示
詳細は以下で解説します。
まず押さえる:scp と rsync の本質
scp(Secure Copy)
scp は SSH プロトコル上でファイルをコピーするコマンド。1990年代から存在するUnix系OSの標準ツール。
scp = ssh + cp
シンプルで直感的、SSH さえ動けば使える手軽さが最大の魅力。
rsync(Remote Sync)
rsync は Andrew Tridgell(Samba 開発者)が開発した差分転送特化の同期ツール。1996年公開。
rsync = 差分検出 + 転送最適化 + 柔軟なオプション
delta-transfer algorithm(差分転送アルゴリズム)により、変更部分のみを転送します。
【重要】OpenSSH 9.0 以降の scp
2022年4月リリースの OpenSSH 9.0 で、scp の基盤プロトコル(SCP プロトコル)が非推奨化されました:
- 旧 SCP プロトコル: 設計上のセキュリティ問題あり
- 新 scp コマンド: 内部的にSFTPを使用(デフォルト)
- 従来の挙動が必要:
-Oオプションで旧SCP プロトコル指定
# OpenSSH 9.0+ での scp
scp file.txt user@server:/path/
# 実際は SFTP プロトコルで転送
# 旧SCP プロトコル強制(互換性のため)
scp -O file.txt user@server:/path/
現状では scp コマンド自体は動作しますが、新規スクリプトでは rsync や sftp を推奨する流れになっています。
scp の使い方
基本構文
# ローカル → リモート
scp [オプション] source user@host:/dest
# リモート → ローカル
scp [オプション] user@host:/source /dest
# リモート → リモート
scp [オプション] user1@host1:/source user2@host2:/dest
基本例
# ファイルを送る
scp file.txt user@server:/home/user/
# ファイルを取得
scp user@server:/home/user/file.txt ./
# ディレクトリ全体
scp -r ./mydir user@server:/backup/
主要オプション
| オプション | 説明 |
|---|---|
-r | 再帰的(ディレクトリ) |
-P PORT | SSHポート指定(大文字P) |
-i KEY | 秘密鍵指定 |
-p | 権限・タイムスタンプ保持 |
-C | 圧縮 |
-l LIMIT | 帯域制限(Kbit/s) |
-v | 詳細表示 |
-q | quiet モード |
-O | 旧SCPプロトコル使用 |
例:ポート指定と秘密鍵
scp -P 2222 -i ~/.ssh/id_rsa file.txt user@server:/path/
⚠️ scp の -P は大文字。SSHの -p と紛らわしいので注意。
帯域制限
# 800 Kbit/s に制限
scp -l 800 large_file.tar.gz user@server:/backup/
圧縮
scp -C file.txt user@server:/path/
CPU使用率上がるが、遅い回線では有効。
scp の限界
- 中断した転送を再開できない(最初からやり直し)
- 除外パターンなし
- 削除同期なし
- 差分検出なし(毎回全ファイル送信)
- dry-run なし
これらが必要なら rsync へ。
rsync の使い方
基本構文
rsync [オプション] source destination
基本例
# ローカル間コピー
rsync -av /source/ /backup/
# ローカル → リモート
rsync -avz /source/ user@server:/backup/
# リモート → ローカル
rsync -avz user@server:/source/ /local/backup/
# 差分バックアップ
rsync -avz --delete /source/ user@server:/mirror/
末尾スラッシュの重要な違い
これは rsync 最大の落とし穴。
# ❌ ディレクトリごとコピー(source ディレクトリ自体をコピー)
rsync -av /source /dest
# → /dest/source/ が作られる
# ✅ 中身をコピー
rsync -av /source/ /dest/
# → /dest/ 内に source の中身
source の末尾に / があるかどうかで挙動が変わる。dest は影響なし。
主要オプション
| オプション | 説明 |
|---|---|
-a | アーカイブモード(-rlptgoD の組み合わせ) |
-r | 再帰的 |
-l | シンボリックリンクをリンクのまま |
-p | 権限保持 |
-t | タイムスタンプ保持 |
-g | グループ保持 |
-o | オーナー保持 |
-D | デバイスファイル保持 |
-v | 詳細表示 |
-z | 圧縮 |
--progress | 進捗表示 |
-P | --partial --progress の短縮 |
--dry-run / -n | 実行せず表示のみ |
--exclude | 除外パターン |
--include | 含むパターン |
--delete | 存在しないファイルを削除 |
--partial | 中断ファイルを保持 |
--append | 途中から追記 |
--checksum / -c | チェックサム比較 |
--bwlimit | 帯域制限(KB/s) |
-e "ssh -p PORT" | SSH オプション |
-a オプションの詳細
rsync 最重要オプション。「アーカイブモード」で、以下の組み合わせ:
-a = -rlptgoD
-r: 再帰的
-l: シンボリックリンク保持
-p: 権限保持
-t: タイムスタンプ保持
-g: グループ保持
-o: オーナー保持
-D: デバイスファイル保持
通常の用途では -a で十分。よく rsync -av のように -v を足す。
-a の落とし穴
# シンボリックリンクの実体をコピーしたい
rsync -aL /source/ /dest/
# -L でリンクを追跡
デフォルトはリンクとしてコピー。詳細はLinuxでシンボリックリンクを作成・確認・削除する方法の記事も参照。
--dry-run:安全な事前確認
rsync -avn --delete /source/ /dest/
# --dry-run(-n)で実際の転送はせず、何が起こるか表示
⚠️ –delete を使う時は必ず –dry-run で確認。誤って重要なファイルを消す事故を防ぐ。
# ステップ1: 確認
rsync -avn --delete /source/ /dest/ | less
# ステップ2: 意図通りなら実行
rsync -av --delete /source/ /dest/
--exclude / --include:除外パターン
基本
# 特定ファイル除外
rsync -av --exclude 'file.log' /source/ /dest/
# パターン
rsync -av --exclude '*.log' --exclude '*.tmp' /source/ /dest/
# ディレクトリ
rsync -av --exclude '.git/' --exclude 'node_modules/' /source/ /dest/
複数除外パターン
# 除外リストをファイルに
cat > exclude.txt <<EOF
.git/
node_modules/
*.log
tmp/
.DS_Store
EOF
rsync -av --exclude-from=exclude.txt /source/ /dest/
–include の使い方
# .txt だけコピー
rsync -av --include='*.txt' --exclude='*' /source/ /dest/
# ディレクトリも含める必要あり
rsync -av \
--include='*/' \
--include='*.txt' \
--exclude='*' \
/source/ /dest/
--include と --exclude は順序が重要。先に書いたものが優先。
--delete:削除同期
送信元にないファイルを、送信先から削除:
rsync -av --delete /source/ /dest/
用途:
- ミラーリング: 完全な複製を作る
- バックアップの同期
- デプロイ: 古いファイルの残置防止
⚠️ 危険なオプション。誤ると重要データを消す。必ず --dry-run で確認。
亜種
| オプション | タイミング |
|---|---|
--delete | 転送前に削除 |
--delete-before | 明示的に前 |
--delete-after | 転送後に削除 |
--delete-during | 転送中に削除(デフォルト) |
--delete-excluded | 除外パターンのファイルも削除 |
--partial / --append:中断からの再開
–partial
rsync -avz --partial /source/ user@server:/dest/
途中で失敗した場合、中途半端に転送されたファイルを保持。次回実行で続きから。
–progress との組み合わせ
rsync -avz --partial --progress /source/ user@server:/dest/
# または短縮
rsync -avzP /source/ user@server:/dest/
-P = --partial --progress。実務での標準パターン。
–append
rsync -av --append large.iso user@server:/backup/
既存の破損ファイルに追記。用途は限定的(ダウンロード再開等)。
–append-verify
rsync -av --append-verify large.iso user@server:/backup/
追記後にチェックサム検証。
SSH との連携
基本:SSH ポート指定
# デフォルトポート(22)
rsync -avz /source/ user@server:/dest/
# カスタムポート
rsync -avz -e "ssh -p 2222" /source/ user@server:/dest/
秘密鍵指定
rsync -avz -e "ssh -i ~/.ssh/deploy_key" /source/ user@server:/dest/
SSH 設定ファイルの活用
# ~/.ssh/config
Host myserver
HostName server.example.com
Port 2222
User deploy
IdentityFile ~/.ssh/deploy_key
これで:
rsync -avz /source/ myserver:/dest/
# 短くて明快
詳細はSSH host key verification failed の記事も参照。
SSH Multiplexing(高速化)
# ~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
複数回の rsync を連続実行する時、SSH ハンドシェイクを1回で済ませて高速化。
mkdir -p ~/.ssh/sockets
rsync daemon モード(SSHなし)
rsync は SSH なしでも動作:
# サーバー側で rsyncd を起動
sudo systemctl start rsync
# クライアントから
rsync -av rsync://server/module/ /local/
用途:
- LAN内の高速転送(暗号化不要)
- 公開ミラーサーバー
- 巨大データセット配布
圧縮:-z オプション
rsync -avz /source/ user@server:/dest/
転送データを gzip 相当で圧縮。
いつ有効?
| 状況 | -z の効果 |
|---|---|
| 遅いWAN回線 | ✅ 有効(帯域節約) |
| LAN 1Gbps以上 | ❌ 逆効果(CPU がボトルネック) |
| 既に圧縮されたファイル(zip/jpg/mp4) | ❌ ほぼ効果なし |
| テキスト・ソースコード | ✅ 大きく効果あり |
圧縮レベル
# レベル指定(1-9)
rsync -av --compress-level=9 /source/ /dest/
新オプション:–compress-choice
# 圧縮方式選択(rsync 3.2+)
rsync -av --compress-choice=zstd /source/ /dest/
zstd は gzip より高速で圧縮率も高い。対応版なら推奨。
進捗と情報表示
–progress
rsync -avz --progress /source/ /dest/
ファイル単位の進捗を表示:
100,000,000 75% 10.00MB/s 0:00:02
–info オプション(rsync 3.1+)
# 進捗を全体で表示(1行)
rsync -av --info=progress2 /source/ /dest/
出力例:
100,000,000 50% 5.00MB/s 0:00:10
より見やすい。
–stats
rsync -av --stats /source/ /dest/
転送完了後にサマリー表示:
Number of files: 100
Number of created files: 20
Number of deleted files: 0
Total file size: 1.00G bytes
Total transferred file size: 100M bytes
帯域制限
–bwlimit
# 1MB/s に制限
rsync -avz --bwlimit=1000 /source/ user@server:/dest/
# 500 KB/s
rsync -avz --bwlimit=500 /source/ user@server:/dest/
単位は KB/s(scp の -l は Kbit/s なので注意)。
用途
- 本番サーバーへの影響を最小化
- ISP帯域の逼迫防止
- 定時業務時間の考慮
実践シナリオ
シナリオ1:本番サーバーへのデプロイ
# ローカルの build ディレクトリを本番へ
rsync -avz --delete \
--exclude='.git/' \
--exclude='node_modules/' \
--exclude='*.log' \
./dist/ \
deploy@production:/var/www/myapp/
# dry-run で確認
rsync -avzn --delete ... # -n を追加
シナリオ2:定期バックアップ
#!/bin/bash
# /opt/scripts/backup.sh
SOURCE="/home/user/important/"
DEST="backup@backup-server:/backups/user/$(date +%Y%m%d)/"
rsync -avz --partial \
--exclude-from=/etc/rsync-exclude.txt \
--log-file=/var/log/backup.log \
"$SOURCE" "$DEST"
crontab に登録:
0 3 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
詳細はcrontab 書き方 例の記事も参照。
シナリオ3:ディレクトリ完全ミラー
# ミラー元と完全一致(削除も同期)
rsync -avz --delete \
--delete-excluded \
/source/ user@mirror:/dest/
シナリオ4:世代バックアップ(–link-dest)
# 前回のバックアップからハードリンクで容量節約
rsync -av --delete \
--link-dest=/backup/yesterday \
/source/ /backup/today/
変更のないファイルはハードリンクで共有し、ディスク容量を節約。
詳細はLinuxでシンボリックリンクを作成・確認・削除する方法の記事も参照(ハードリンクの解説)。
シナリオ5:大きい ISO ファイルの再開可能な転送
rsync -avzP large.iso user@server:/backup/
# 中断されても続きから
シナリオ6:特定ファイルタイプだけ
# 画像ファイルだけコピー
rsync -avz \
--include='*/' \
--include='*.jpg' \
--include='*.png' \
--exclude='*' \
/photos/ user@server:/images/
シナリオ7:Git リポジトリの高速転送(.git 除外)
rsync -avz \
--exclude='.git/' \
--exclude='node_modules/' \
--exclude='vendor/' \
--exclude='tmp/' \
--exclude='log/' \
/path/to/repo/ user@server:/deploy/
デプロイスクリプトの典型例。
シナリオ8:ローカルバックアップ(別ドライブ)
rsync -av --delete \
--exclude='.Trash/' \
--exclude='*.tmp' \
/home/user/ /mnt/backup/user/
外付けHDD への同期。
パフォーマンスチューニング
1. SSH Multiplexing
# ~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
2. 圧縮は状況次第
# 遅い回線: -z 有効
rsync -avz ...
# 速いLAN: -z なしの方が速い
rsync -av ...
3. CPU が速い暗号を選ぶ
rsync -avz -e "ssh -c aes128-gcm@openssh.com" /source/ user@server:/dest/
# chacha20-poly1305 も高速
4. HPN-SSH 導入(超巨大転送)
WAN 越しに数百 GB 以上を転送するなら、SSH の高性能版 HPN-SSH を検討。
5. 並列 rsync(複数ディレクトリ)
# 4並列
find /source -mindepth 1 -maxdepth 1 -type d -print0 | \
xargs -0 -P 4 -I {} rsync -avz {} user@server:/dest/
6. –whole-file オプション
# ローカル間、または高速LAN
rsync -av --whole-file /source/ /dest/
差分計算をスキップして全ファイル送信。LAN内では差分計算のオーバーヘッド > 転送コストの場合に有効。
トラブルシューティング
Permission denied
Permission denied (publickey).
rsync: connection unexpectedly closed
→ SSH認証の問題。SSH host key verification failed の記事を参照。
rsync: command not found
bash: rsync: command not found
→ インストール:
sudo apt install rsync # Ubuntu/Debian
sudo dnf install rsync # RHEL/CentOS
brew install rsync # macOS
リモート側にも rsync が必要
rsync は両側にインストールが必要。片方だけだと失敗:
rsync: connection unexpectedly closed
rsync: server sent unexpected response
→ リモート側にも:
ssh user@server "sudo apt install rsync"
Argument list too long
rsync: too many arguments
→ ファイル数が多すぎる。パターンや除外を活用:
rsync -av --include='*.log' --exclude='*' /source/ /dest/
または find + xargs で分割。
詳細はLinux find オプション一覧の記事も参照。
タイムスタンプがずれる
rsync -av /source/ /dest/
# 常に差分ありと判定される
→ ファイルシステム間で秒精度が違う:
rsync -av --modify-window=1 /source/ /dest/
# 1秒の誤差を許容
FAT32 は2秒精度。
中断されて中途半端なファイル残る
rsync -av --partial /source/ /dest/
# 次回実行で続き
.partial のような一時ファイルとして残る。
rsync: chown failed
rsync: chown failed on "file": Operation not permitted
→ 送信先が非root、-a に含まれる -o -g で失敗:
rsync -rlptv /source/ /dest/
# または
rsync -a --no-o --no-g /source/ /dest/
# または
sudo rsync -av /source/ /dest/
ディレクトリの末尾スラッシュを忘れた
# ❌
rsync -av /source /dest
# → /dest/source/ ができる
# ✅
rsync -av /source/ /dest/
–delete で重要ファイルを消した
必ず –dry-run で事前確認。
事故った場合はバックアップから復旧。復元不能なファイルはrsync --delete前に別途保存を。
セキュリティ考慮
1. SSH経由が基本
# ✅ SSH経由(暗号化)
rsync -avz /source/ user@server:/dest/
# ❌ rsync daemon(非暗号化)
rsync -av /source/ rsync://server/module/
# LAN 内限定推奨
2. 鍵の管理
# 専用の deploy 鍵
ssh-keygen -t ed25519 -f ~/.ssh/deploy_ed25519 -C "deploy@myapp"
# サーバー側 authorized_keys
# command="rsync --server ..." を付けて制限も可能
3. rsync 用の制限された SSH コマンド
# authorized_keys
command="rsync --server -logDtprze.iLsfxCIvu . /var/backup",no-port-forwarding,no-X11-forwarding ssh-ed25519 AAAAC3...
rsync だけを許可する鍵。デプロイ自動化で活用。
4. root で走らせる時の注意
# ❌ 危険
sudo rsync -av / user@server:/backup/
# ✅ 明示的な範囲
sudo rsync -av /etc /home user@server:/backup/
よくある質問(FAQ)
Q1. scp は本当に非推奨?
プロトコル(旧SCP)は非推奨、コマンド(scpコマンド)はOpenSSH 9.0以降SFTP プロトコルで動作。新規スクリプトでは rsync / sftp が推奨されています。
Q2. rsync と scp の速度差
- 単一ファイル・初回: 誤差程度
- 繰り返し転送: rsync が圧倒的(差分のみ)
- 多数の小ファイル: rsync がやや遅い(メタデータ処理)
- 単一巨大ファイルの部分更新: rsync が超高速
Q3. rsync でリモート → リモート
# 直接はできない、経由が必要
rsync -avz user1@host1:/source/ /tmp/local/
rsync -avz /tmp/local/ user2@host2:/dest/
または -e ssh オプションでのTrick が可能だが、通常は経由推奨。
Q4. rsync の逆方向コピー
# サーバー → ローカル
rsync -avz user@server:/source/ /local/dest/
方向は source/dest の順序で決まる。
Q5. Windows で rsync 使いたい
- WSL2: Linux 環境で普通に rsync
- cwRsync: Cygwin ベース
- DeltaCopy: GUI ラッパー
- Git Bash: 一部制限あり
Q6. rsync のログ
rsync -av --log-file=/var/log/rsync.log /source/ /dest/
または --log-file-format でフォーマット指定。
Q7. 転送前にサイズを知りたい
du -sh /source/
# サイズ確認
rsync -avn --stats /source/ /dest/ | tail
# 実際にどれくらい転送されるか(差分後)
Q8. rsync の逆マウント
Sshfs でリモートをマウントしてローカルとして扱う:
sshfs user@server:/remote /mnt/remote
rsync -av /source/ /mnt/remote/
用途は限定的。
Q9. rsync が遅い
# 圧縮を切る(LAN)
rsync -av ...
# 大きいファイルは差分計算スキップ
rsync -av --whole-file ...
# 並列
find /source -mindepth 1 -maxdepth 1 -type d | \
xargs -P 4 -I {} rsync -av {} /dest/
Q10. Docker との連携
# ローカル → Dockerコンテナ
docker cp /source/ container:/dest/
# rsync で Docker 経由(volume マウント推奨)
rsync -av /source/ /var/lib/docker/volumes/myapp_data/_data/
詳細はdocker daemon 接続エラーの記事も参照。
Q11. rsync のバージョン確認
rsync --version
# rsync version 3.2.7 protocol version 31
3.1+ で --info 系オプション、3.2+ で --compress-choice=zstd 等の新機能。
Q12. rsync 完了後にコマンド実行
rsync -av /source/ user@server:/dest/ && \
ssh user@server "systemctl restart myapp"
デプロイ後のサービス再起動等に。
参考リンク・関連資料
公式
- rsync 公式 – rsync
- rsync manual – man ページ
- OpenSSH 9.0 release notes – scp 非推奨の詳細
関連ツール
関連記事(本サイト)
- wget と curl 違い – HTTP転送ツール
- SSH host key verification failed – SSH接続問題
- Linuxでシンボリックリンクを作成・確認・削除する方法 – リンク保持
- Linuxでプロセスをバックグラウンド実行する方法 – nohup で長時間rsync
- Linux find オプション一覧 – ファイル検索連携
- Linux grep オプション一覧 – ログ検索
- Linux awk 使い方 – データ加工
- crontab 書き方 例 – 定期バックアップ
- Linuxでファイル差分を確認する方法 – diff系ツール
- Linux kill vs pkill vs killall – プロセス管理
- docker daemon 接続エラー – Docker系
- git push rejected – Git転送問題
- Rails 8 アップグレードガイド – Rails 全般
まとめ
scp vs rsync、要点を再整理します。
使い分け早見表
| 状況 | 推奨 |
|---|---|
| 1回きりの単純コピー | scp(or rsync)どちらでも |
| 繰り返しコピー | rsync(差分転送) |
| 大きいファイルの中断再開 | rsync --partial |
| ディレクトリの完全同期 | rsync --delete |
| バックアップ | rsync(世代管理も --link-dest) |
| デプロイ | rsync(除外パターン活用) |
| 除外パターン必要 | rsync --exclude |
| dry-run 確認したい | rsync --dry-run |
| 帯域制限 | 両方可(rsyncは KB/s、scp は Kbit/s) |
| クラウドストレージ(S3等) | rclone 検討 |
黄金コマンド
# rsync の実務標準
rsync -avz --progress /source/ user@server:/dest/
# バックアップ(削除同期)
rsync -avz --delete --dry-run /source/ user@server:/backup/
# 確認後、-n を外して実行
# デプロイ
rsync -avz --delete \
--exclude='.git/' --exclude='node_modules/' \
./dist/ deploy@prod:/var/www/myapp/
rsync 必須オプション
| オプション | 用途 |
|---|---|
-a | アーカイブモード(標準) |
-v | 詳細表示 |
-z | 圧縮(遅い回線) |
-P | --partial --progress |
--dry-run / -n | 事前確認 |
--exclude | 除外 |
--delete | 削除同期 |
-e "ssh -p PORT" | SSHオプション |
事故防止
- –delete は必ず –dry-run
- source の末尾スラッシュに注意
- -a で権限保持を意識
- SSH経由が基本(rsync daemon はLAN内限定)
- 本番デプロイ前にステージングで検証
2026年の推奨
- scp: 単純な1回コピーのみ(あるいはOpenSSH 9.0+で内部SFTP)
- rsync: すべての本格的なファイル転送で第一選択
- rclone: S3・Google Drive等のクラウド連携
- SFTP: インタラクティブなファイル操作
これらの知識は、Linux サーバー運用・バックアップ・デプロイ・データ移行など、あらゆる場面で活用できます。本記事をブックマークしておけば、ファイル転送のタスクを安全かつ効率的にこなせるようになります。
本記事は2026年6月時点の情報をもとに、rsync 3.2+、OpenSSH 9.x、Ubuntu 22.04/24.04、macOS Sonoma での動作確認・公式ドキュメントに基づき作成しています。rsync/OpenSSH のバージョンによって挙動が異なる場合があるため、最新の情報はrsync公式、OpenSSH公式 もあわせてご確認ください。
-
前の記事
【完全比較】scp vs rsync ファイル転送はどちらを使うべきか|差分転送・オプション・実践パターンを徹底解説 2026.07.03
-
次の記事
【完全ガイド】iostat の見方・使い方|ディスクI/Oのボトルネックを特定する方法を徹底解説 2026.07.06
コメントを書く