| 方向 | 格式 | 範例 |
| 本地 → 遠程 | scp 本地文件 user@host:遠程路徑 | scp file.txt root@10.0.0.2:/opt/ |
| 遠程 → 本地 | scp user@host:遠程文件 本地路徑 | scp root@10.0.0.2:/var/log/syslog ./ |
| 遠程 → 遠程 | scp user1@host1:文件 user2@host2:路徑 | 流經本地中轉 |
路徑含空格需雙重引號:scp "file name.txt" 'user@host:"remote path/"'
三、實戰範例
1. 複製單個文件到遠程目錄(保留文件名)
scp nginx-0.5.38.tar.gz root@192.168.120.204:/opt/soft/
2. 複製並重命名
scp nginx-0.5.38.tar.gz root@192.168.120.204:/opt/soft/nginx-latest.tar.gz
3. 遞歸複製整個目錄
scp -r /opt/soft/mongodb root@192.168.120.204:/opt/soft/
4. 從遠程下載到本地
scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
5. 限制帶寬 10MB/s、啟用壓縮、保留屬性
scp -C -p -l 81920 largefile.iso root@10.0.0.2:/data/
6. 使用指定私鑰免密傳輸
scp -i ~/.ssh/id_rsa_backup backup.tar.gz backup@storage:/backups/
四、SSH 別名簡化命令(~/.ssh/config)
Host prod-web
HostName 192.168.120.204
User root
Port 22
IdentityFile ~/.ssh/id_rsa_prod
Compression yes
之後直接:scp file.txt prod-web:/opt/soft/
五、常見問題與避坑
- 權限拒絕: 確認遠程用戶對目標目錄有寫權限,或用
sudo scp(需遠程 sudo 權限)
- 主機金鑰變更: 刪除
~/.ssh/known_hosts 對應行或 ssh-keygen -R host
- 大量小文件極慢: 打包後傳輸
tar czf - dir | ssh host "tar xzf - -C /target" 或改用 rsync
- 只讀文件系統搶救:
scp -r /mnt/readonly/* user@host:/backup/(scp 讀取不需寫入源端)

copyright ©
萬盛學電腦網 all rights reserved