前言
scp (Secure Copy) 基於 SSH 協定,提供加密、認證的遠端檔案複製。語法簡單、無需額外服務,是跨主機傳檔首選。本文涵蓋核心語法、常用參數、目錄遞歸、免密碼配置、效能優化與替代工具比較。
基本語法
scp [選項] 來源 目的
# 來源/目的格式:[[user@]host:]路徑
# 本地路徑不加 host@
常用參數速查
| 參數 | 功能 |
-r | 遞歸複製目錄 |
-P port | 指定 SSH 埠口 (大寫 P,小寫 p 為保留屬性) |
-p | 保留修改時間、存取時間、模式 (權限) |
-C | 啟用壓縮 (低頻寬網路提速) |
-l limit | 限制頻寬 (Kbit/s) |
-o ssh_option | 傳遞 SSH 選項 (如 -o StrictHostKeyChecking=no) |
-4 / -6 | 強制 IPv4 / IPv6 |
-v | 詳細除錯輸出 |
-q | 安靜模式 (隱藏進度條) |
實戰範例集
| 場景 | 指令 |
| 本地檔 → 遠端 | scp /path/file user@192.168.1.10:/remote/path/ |
| 遠端檔 → 本地 | scp user@192.168.1.10:/remote/file /local/path/ |
| 遠端 → 遠端 (經本地中轉) | scp user1@host1:/file user2@host2:/path/ |
| 複製目錄 | scp -r /local/dir user@host:/remote/ |
| 指定埠口 | scp -P 2222 file user@host:/path/ |
| 保留屬性 + 壓縮 | scp -Cp file user@host:/path/ |
| 限制 10 Mbps | scp -l 10000 file user@host:/path/ |
| 批次腳本免互動 | scp -o BatchMode=yes -o StrictHostKeyChecking=no file user@host:/path/ |
免密碼自動化:SSH 金鑰對
# 1. 產生金鑰 (一次)
ssh-keygen -t ed25519 -C "backup@server"
# 2. 推送公鑰到目標主機
ssh-copy-id user@target_host
# 3. 驗證
ssh user@target_host 'echo ok'
# 之後 scp 無需輸入密碼
效能優化建議
- 大檔案/高延遲:
scp -C -o "Ciphers=aes128-ctr" -o "MACs=umac-64-etm@openssh.com" (啟用壓縮+快速加密/驗證演算法)。
- 海量小檔案:
tar czf - /src | ssh user@host "tar xzf - -C /dst" (單一 SSH 連線串流,避免建立連線開銷)。
- 斷點續傳:scp 不支援,改用
rsync -avzP --partial。
替代工具比較
| 工具 | 優點 | 缺點 | 適用場景 |
| scp | 普及、無需額外服務、SSH 原生 | 無續傳、單執行緒、大量小檔慢 | 臨時、單檔、腳本自動化 |
| rsync | 增量、續傳、保留屬性、多執行緒 (--parallel)、過濾規則豐富 | 需雙端安裝、語法較複雜 | 備份、同步、遷移、大量小檔 |
| sftp | 互動式、支援續傳 (reget)、目錄操作 | 批次腳本較繁瑣 | 人工互動、圖形客戶端 |
| tar+ssh | 單一串流、保留權限/時間、極快 | 無增量、無續傳 | 一次性大量資料遷移 |
| FTP/FTPS | Windows 原生支援、圖形客戶端多 | 明文/憑證複雜、穿透 NAT 難 | 舊系統相容、非技術用戶 |
常見錯誤排查
| 錯誤 | 原因 | 解決 |
| Permission denied | 金鑰未授權、權限 700/600 錯誤、SELinux | 檢查 ~/.ssh 權限、restorecon -R ~/.ssh |
| Connection refused | sshd 未啟動、埠口錯誤、防火牆 | systemctl status sshd、firewall-cmd --add-service=ssh |
| Host key verification failed | known_hosts 過期/衝突 | ssh-keygen -R host 移除舊記錄 |
| scp: /path: not a regular file | 複製目錄未加 -r | 加上 -r |
總結
scp 是「隨身攜帶」的傳檔利器。掌握 -r -P -C -o 核心參數,搭配 SSH 金鑰免密碼,日常運維足夠應付 80% 場景。大量同步、斷點續傳請轉 rsync,互動操作用 sftp,形成工具組合拳。