技術文章 · IT 指令工具箱

scp、sftp 指令:SSH 遠端檔案上傳、下載與續傳

整理 scp 與 sftp 上傳、下載、遞迴目錄、指定 port/金鑰、批次模式與續傳,並說明遠端路徑、引號與新式 scp 的 SFTP 行為。

作者 Steve Chen · 發布  · 約 4 分鐘閱讀

IT 指令工具箱 — 廷皓技術專欄插圖

scp 適合一次性複製,sftp 適合互動瀏覽與續傳。OpenSSH 現代版本的 scp 預設使用 SFTP protocol,不應再把所有行為都當成舊 SCP protocol。

18 組範例OpenSSHLinuxmacOSWindows OpenSSH查核日期:2026-08-11
動手前:先確認來源與目的方向。上傳正式路徑前先放暫存檔、驗 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。

保留修改時間與 modeOpenSSH scp

scp -p report.csv [email protected]:/srv/inbox/

擁有者與 ACL 不會因此完整保留。

sftp 互動與批次

查看遠端目前目錄SFTP prompt

pwd

sftp 內的 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 或系統內建說明確認,再以當版官方文件為準。

聯絡廷皓討論 看更多文章