scp 適合一次性複製,sftp 適合互動瀏覽與續傳。OpenSSH 現代版本的 scp 預設使用 SFTP protocol,不應再把所有行為都當成舊 SCP protocol。
動手前:先確認來源與目的方向。上傳正式路徑前先放暫存檔、驗 checksum,再原子改名;不要把含空白或 shell 特殊字元的遠端路徑隨意拼接。
scp 常用傳檔
上傳單一檔案OpenSSH scp
scp report.csv [email protected]:/srv/inbox/本機來源在前、遠端目的在後。
下載單一檔案OpenSSH scp
scp [email protected]:/srv/reports/report.csv ./遠端來源在前、本機目的在後。
遞迴上傳目錄OpenSSH scp
scp -r project/ [email protected]:/srv/staging/會複製整棵目錄;先確認目的層級。
指定 SSH portOpenSSH scp
scp -P 2222 report.csv [email protected]:/srv/inbox/scp 使用大寫 -P。
指定私鑰OpenSSH scp
scp -i ~/.ssh/id_ed25519 report.csv [email protected]:/srv/inbox/不要分享私鑰。
限制傳輸速率OpenSSH scp
scp -l 8192 large.iso [email protected]:/srv/inbox/-l 單位為 Kbit/s,不是 KiB/s。
經 ProxyJump 傳檔OpenSSH scp
scp -o [email protected] report.csv [email protected]:/srv/inbox/也可把跳板設定放進 ~/.ssh/config。
保留修改時間與 modeOpenSSH scp
scp -p report.csv [email protected]:/srv/inbox/擁有者與 ACL 不會因此完整保留。
sftp 互動與批次
開啟 SFTP 連線OpenSSH sftp
sftp [email protected]進入互動提示字元。
指定 portOpenSSH sftp
sftp -P 2222 [email protected]同樣使用大寫 -P。
查看遠端目前目錄SFTP prompt
pwdsftp 內的 pwd 看遠端;lpwd 看本機。
列出遠端檔案SFTP prompt
ls -la支援選項依 SFTP client 版本。
上傳檔案SFTP prompt
put report.csv /srv/inbox/report.csv先傳暫存檔再 rename 可降低半成品被讀取的風險。
下載檔案SFTP prompt
get /srv/reports/report.csv ./report.csv本機目的路徑在第二個參數。
續傳下載SFTP prompt
reget /srv/reports/large.iso ./large.iso完成後仍需 checksum。
續傳上傳SFTP prompt
reput large.iso /srv/inbox/large.iso.part確定遠端 .part 是同一檔案的前段。
批次執行 SFTPOpenSSH sftp
sftp -b batch.txt [email protected]batch.txt 先審核;失敗處理受命令前綴與版本影響。
在 SFTP 內改名SFTP prompt
rename /srv/inbox/report.csv.part /srv/inbox/report.csv同一檔案系統通常可原子改名。
怎麼確認有做對
- 傳輸前後計算 SHA-256。
- 遠端用 ls、stat 確認大小、時間與權限。
- 以應用程式或匯入程序做最後驗收。
常見錯誤
- 把 scp 方向看反而覆蓋本機檔案。
- 誤用小寫 -p 指定 port。
- 大檔沒有 .part 與 checksum。
- 假設 scp -p 能完整保留 ACL、擁有者與擴充屬性。
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。