萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux scp 命令實戰匯總:跨服務器安全複製、參數詳解、帶寬限制、免密傳輸

scp(Secure Copy)基於 SSH 協議,在 Linux 服務器間加密傳輸文件/目錄。相比 rsync,scp 資源佔用極低、不影響磁盤 I/O,適合小文件大量、只讀文件系統搶救數據等場景。本文匯總參數、本地↔遠程雙向複製、目錄遞歸、帶寬限制、SSH 金鑰免密、別名簡化等實戰技巧。

一、命令格式與核心參數

scp [選項] [源路徑] [目標路徑]
參數說明
-r遞歸複製目錄(必加)
-p保留修改時間、訪問時間、權限
-C啟用壓縮(低帶寬網絡提速)
-l 限制限制帶寬,單位 Kbit/s(如 -l 8192 = 1MB/s)
-P 端口指定 SSH 端口(大寫 P,區別 ssh -p)
-i 密鑰文件指定私鑰(免密登錄)
-v詳細調試輸出
-q靜默模式(隱藏進度條)
-1/-2強制 SSH 協議版本
-4/-6強制 IPv4/IPv6

二、路徑格式速查

路徑含空格需雙重引號:scp "file name.txt" 'user@host:"remote path/"'

三、實戰範例

1. 複製單個文件到遠程目錄(保留文件名)

scp nginx-0.5.38.tar.gz root@192.168.120.204:/opt/soft/

2. 複製並重命名

scp nginx-0.5.38.tar.gz root@192.168.120.204:/opt/soft/nginx-latest.tar.gz

3. 遞歸複製整個目錄

scp -r /opt/soft/mongodb root@192.168.120.204:/opt/soft/

4. 從遠程下載到本地

scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

5. 限制帶寬 10MB/s、啟用壓縮、保留屬性

scp -C -p -l 81920 largefile.iso root@10.0.0.2:/data/

6. 使用指定私鑰免密傳輸

scp -i ~/.ssh/id_rsa_backup backup.tar.gz backup@storage:/backups/

四、SSH 別名簡化命令(~/.ssh/config)


Host prod-web
    HostName 192.168.120.204
    User root
    Port 22
    IdentityFile ~/.ssh/id_rsa_prod
    Compression yes

之後直接:scp file.txt prod-web:/opt/soft/

五、常見問題與避坑

  • 權限拒絕: 確認遠程用戶對目標目錄有寫權限,或用 sudo scp(需遠程 sudo 權限)
  • 主機金鑰變更: 刪除 ~/.ssh/known_hosts 對應行或 ssh-keygen -R host
  • 大量小文件極慢: 打包後傳輸 tar czf - dir | ssh host "tar xzf - -C /target" 或改用 rsync
  • 只讀文件系統搶救: scp -r /mnt/readonly/* user@host:/backup/(scp 讀取不需寫入源端)

scp 跨服務器複製示意圖

copyright © 萬盛學電腦網 all rights reserved
方向格式範例
本地 → 遠程scp 本地文件 user@host:遠程路徑scp file.txt root@10.0.0.2:/opt/
遠程 → 本地scp user@host:遠程文件 本地路徑scp root@10.0.0.2:/var/log/syslog ./
遠程 → 遠程scp user1@host1:文件 user2@host2:路徑流經本地中轉