1. 命令簡介
scp(secure copy) 是 linux 系統下基於 ssh 登陸進行安全的遠程文件拷貝命令,可以在兩台 Linux 主機進行復制操作
# 語法 scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2 # 簡易寫法 scp [可選參數] file_source file_target
# 參數說明 -1 強制 scp 命令使用協議 ssh1 -2 強制 scp 命令使用協議 ssh2 -4 強制 scp 命令只使用 IPv4 尋址 -6 強制 scp 命令只使用 IPv6 尋址 -B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語) -C 允許壓縮(將 -C 標志傳遞給 ssh ,從而打開壓縮功能) -p 保留原文件的修改時間,訪問時間和訪問權限 -q 不顯示傳輸進度條 -r 遞歸復制整個目錄【常用,用於復制文件夾】 -v 詳細方式顯示輸出。 scp 和 ssh(1) 會顯示出整個過程的調試信息。這些信息用於調試連接,驗證和配置問題 -c(cipher) 以 cipher 將數據傳輸進行加密,這個選項將直接傳遞給 ssh -F(ssh_config) 指定一個替代的 ssh 配置文件,此參數直接傳遞給 ssh -i(identity_file) 從指定文件中讀取傳輸時使用的密鑰文件,此參數直接傳遞給 ssh -l(limit) 限定用戶所能使用的帶寬,以 Kbit/s 為單位 -o(ssh_option) 如果習慣於使用 ssh_config(5) 中的參數傳遞方式 -P(port) 注意是大寫的 P , port 是指定數據傳輸用到的端口號 -S(program) 指定加密傳輸時所使用的程序。此程序必須能夠理解 ssh(1) 的選項
2. 命令應用
2.1 遠程拷貝文件/文件夾
# 拷貝本機 /root/test 整個目錄至遠程主機 root 用戶的家目錄下 scp -r /root/test root@remot_ip:~/ # 拷貝本機單個文件至遠程主機 root 用戶的家目錄下 scp /home/root/test/test.txt root@remot_ip:~/
/home/root/test/ 本地文件的絕對路徑
test.txt 要復制到遠程端上的本地文件
root 通過 root 用戶登錄到遠程服務器(也可以使用其他擁有同等權限的用戶)
remot_ip 遠程端的 ip 地址(也可以使用域名或機器名)
~/ 將本地文件復制到位於遠程端上的路徑
2.2 遠程文件/文件夾下載
# 把遠程端上面的 /root/ 文件夾,下載到本地的 /home/test/test/ 下,使用遠程端的 root 登錄 scp -r root@www.abc.com:/root/ /home/test/test/ # 把遠程端上面的 /test/test.txt 下載到本地的 /home/test/test/ 下並改名為 abc.txt ,使用遠程端的 root 登錄 scp test@www.abc.com:/test/test.txt /home/test/test/abc.txt
test 通過 test 用戶登錄到遠程服務器(也可以使用其他擁有同等權限的用戶) www.abc.com 遠程服務器的域名(也可以使用該服務器 ip 地址) /test/test.txt 准備復制到本機的位於遠程服務器上的文件 /home/test/test/ 將遠程文件復制到本地的絕對路徑 abc.txt 將遠程文件復制到本地的文件名
注意:
1.如果遠程服務器防火牆有特殊限制,scp 便要走特殊端口,具體用什么端口視情況而定
例: scp -p 4588 remote_user@www.abc.com:/usr/local/sin.sh /home/administrator
2.使用 scp 要注意所使用的用戶是否具有可讀取遠程服務器相應文件的權限