−25%

Windows 年繳方案適用,至 10 月 31 日。 檢視方案

EQVPS
開始使用

如何把檔案傳到 VPS:scp、rsync 和 SFTP

用 scp 在伺服器之間來回複製檔案,用可斷點續傳的 rsync 同步大資料夾,或使用 SFTP 用戶端;在擁有專屬 SSH 埠的 NAT 方案上同樣適用。

遲早都要把檔案傳到伺服器上:網站的建置產物、資料庫匯出檔案、在本機寫好的設定。為此您並不需要 FTP 伺服器:SSH 已經提供了三個好用的工具。所有範例都使用文件專用位址,請換成您自己伺服器的位址。

弄清您的連線資訊

  • 獨立 IP 方案: root@203.0.113.10,埠 22。
  • NAT 方案: 主機和您的專屬 SSH 埠顯示在面板中(例如埠 20123)。下面的所有指令都需要這個埠;參見 NAT 存取如何工作。

scp:複製檔案或資料夾

上傳一個檔案:

scp backup.sql root@203.0.113.10:/root/

下載一個檔案:

scp root@203.0.113.10:/var/log/nginx/access.log .

整個資料夾:

scp -r ./site root@203.0.113.10:/var/www/

在 NAT 方案上,用大寫的 -P 指定埠:

scp -P 20123 backup.sql root@your-nat-host:/root/

rsync:同步資料夾的正確工具

rsync 只發送差異部分,顯示進度,連線中斷後還能繼續。兩端都需要安裝它(apt install -y rsync)。

rsync -avzP ./site/ root@203.0.113.10:/var/www/site/
  • -a 保留權限和時間戳,-v 列出檔案,-z 壓縮傳輸,-P 顯示進度並支援斷點續傳。

使用自訂 SSH 埠時:

rsync -avzP -e "ssh -p 20123" ./site/ root@your-nat-host:/var/www/site/

要讓目標與源完全一致(同時刪除您在本機刪掉的檔案),就加上 --delete,但請先看看它會做什麼:

rsync -avzP --delete --dry-run ./site/ root@203.0.113.10:/var/www/site/

注意末尾的斜槓。 ./site/ 複製的是 site 的內容;./site 則把資料夾本身複製到目標中。用上 --delete 時,這個區別決定了哪個目錄會被清空。

SFTP:互動式或圖形介面

命令列用戶端用起來像一個小型檔案管理器:

sftp -P 20123 root@your-nat-host
sftp> put backup.sql
sftp> get /etc/nginx/nginx.conf
sftp> exit

更喜歡圖形介面?FileZilla、WinSCP 或 Cyberduck 用同樣的資訊連線:SFTP 協議、您的主機、埠 22(或您的 NAT 埠)、使用者 root,以及您的 SSH 金鑰或密碼。

用 SSH 金鑰更快

這些工具都基於 SSH,所以一把 SSH 金鑰就能免去輸入密碼,還能讓您用 cron 自動化傳輸。還沒設定的話:SSH 金鑰認證。新的 EQVPS 伺服器在您切換到金鑰之前接受面板中的 root 密碼,我們建議您在第一天就切換。

大檔案傳輸

面對幾十 GB 的資料,rsync 是唯一明智的選擇:連線一旦中斷,重新執行同一條指令,它就會從斷開的地方繼續。請在傳送端機器的 tmux 或 screen 裡執行,這樣合上筆電也不會中斷傳輸。

相關

常見問題

scp 和 rsync 有什麼區別?

scp 每次都複製全部內容。rsync 會比較兩端,只發送有變化的部分,能續傳中斷的傳輸,還能映像一個資料夾。單個檔案用 scp 就夠了;需要經常同步的資料夾請用 rsync。

怎麼使用非標準的 SSH 埠?

scp 和 sftp 用大寫的 -P(scp -P 20123),ssh 用小寫的 -p,rsync 則這樣傳入:rsync -e 'ssh -p 20123'。在 EQVPS 的 NAT 方案上,專屬 SSH 埠顯示在面板裡。

能用圖形介面用戶端嗎?

可以。任何 SFTP 用戶端(FileZilla、WinSCP、Cyberduck)都能用與 SSH 相同的主機、埠、使用者和 SSH 金鑰或密碼連線。請選擇 SFTP 協議,而不是 FTP。

在 Windows 上能用嗎?

Windows 10 和 11 內建了 OpenSSH,所以 scp 和 sftp 在 PowerShell 中的用法和這裡完全一樣。rsync 沒有內建;可以透過 WSL 使用,或者改用 WinSCP 的同步功能。

rsync 裡末尾的斜槓是什麼意思?

'rsync -a site/ dest/' 會把 site 的內容複製到 dest 中;'rsync -a site dest/' 則會建立 dest/site。搭配 --delete 時如果弄錯,可能會清空錯誤的資料夾,所以請先用 --dry-run 執行一遍。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。