Mac (基於 BSD) 與 Linux 文件傳輸,SCP 基於 SSH 協議,加密安全、無需額外部署。本文實戰演示下載、上傳、目錄遞歸、權限處理全流程。
systemctl start sshd (Linux) / 系統偏好設置 → 共享 → 遠程登錄 (Mac)# Linux 服務器上
sudo chown $USER /var/log/app.log # 或使用 sudo scp
# Mac 終端執行
scp user@192.168.1.100:/var/log/app.log ~/Downloads/
# 提示輸入密碼,或使用密鑰免密
scp user@192.168.1.100:/var/log/*.log ~/Downloads/logs/
scp ~/Documents/config.yaml user@192.168.1.100:/etc/app/
scp -r ~/Projects/myapp user@192.168.1.100:/opt/apps/
# 無 -r 會報錯: "not a regular file"
scp ~/local.conf user@192.168.1.100:/etc/app/prod.conf
# Mac 生成密鑰對
ssh-keygen -t ed25519 -C "mac-to-linux"
# 複製公鑰到 Linux
ssh-copy-id user@192.168.1.100
# 或手動
cat ~/.ssh/id_ed25519.pub | ssh user@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# 驗證免密
ssh user@192.168.1.100
# 壓縮傳輸 (-C)
scp -C large_file.dat user@host:/path/
# 指定加密算法 (AES-GCM 硬件加速)
scp -c aes256-gcm@openssh.com file user@host:/path/
# 限制帶寬 (KB/s)
scp -l 10000 large_file user@host:/path/
# -p 保留修改時間、訪問時間、權限
scp -p file user@host:/path/
# 結合使用
scp -r -p -C ~/project user@host:/opt/
| 工具 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| SCP | 普遍可用、加密、單文件簡單 | 大量小文件慢、無斷點續傳 | 臨時、少量文件 |
| rsync | 增量同步、斷點續傳、保留屬性最好 | 語法較複雜 | 備份、同步、大量文件 |
| SFTP | 交互式、支持斷點續傳 | 需交互或批處理腳本 | 文件管理、瀏覽 |
| AirDrop/共享資料夾 | 圖形化、無需命令 | 僅局域網、Mac-Linux 需 Samba | 桌面用戶、非技術人員 |
# Mac 同步到 Linux (增量、壓縮、顯示進度、刪除目標多餘)
rsync -avz --progress --delete ~/Projects/ user@192.168.1.100:/opt/Projects/
# Linux 同步到 Mac
rsync -avz --progress user@192.168.1.100:/var/www/ ~/Sites/
| 錯誤 | 原因 | 解決 |
|---|---|---|
| Permission denied | 權限不足 | chown、sudo、調整目標目錄權限 |
| Connection refused | SSH 服務未啟動/端口錯誤 | systemctl status sshd、檢查防火牆 |
| Host key verification failed | known_hosts 衝突 | ssh-keygen -R hostname |
| scp: not a regular file | 目錄傳輸缺 -r | 添加 -r 參數 |
SCP 為跨平台文件傳輸基石,配合 SSH 密鑰與 rsync,構建高效安全的異構系統數據流動通道。