scp是 secure copy的縮寫, scp是linux系統下基於ssh登陸進行安全的遠程文件拷貝命令,是 cp
命令的加強版。
常見命令
基本用法
scp [可選參數] 源文件/目錄 目標文件/目錄
常用的可選參數
-P
大寫的,指定端口號-r
遞歸復制整個目錄-v
顯示所有 debug 信息-q
不顯示傳輸進度-C
大寫的,啟用壓縮-4
使用 IPv4 地址-6
使用 IPv6 地址
本地復制到遠程
scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ip:remote_folder
- 第1個指定了用戶名,命令執行后需要再輸入密碼;
- 第2個沒有指定用戶名,命令執行后需要輸入用戶名和密碼;
例如:
復制文件
scp /root/test.txt root@192.168.1.10:/root/
將 /root/test.txt 拷貝到 192.168.1.10 的 /root/ 目錄下,文件名還是 text.txt,使用 root 用戶,此時會提示輸入遠程 root 用戶的密碼。
復制文件並重命名
scp /root/test.txt root@192.168.1.10:/root/test1.txt
將 /root/test.txt 拷貝到 192.168.1.10 的 /root/ 目錄下,文件名還是 text1.txt,使用 root 用戶,此時會提示輸入遠程 root 用戶的密碼。
復制整個目錄
scp -r /root/test/ root@192.168.1.10:/root/
將整個目錄 /root/test/ 復制到 192.168.1.10 的 /root/ 下,即遞歸的復制,使用 root 用戶,此時會提示輸入遠程 root 用戶的密碼。
遠程復制到本地
遠程復制到本地 與 從本地復制到遠程命令類似,不同的是 遠程文件作為源文件在前,本地文件作為目標文件在后。
scp root@192.168.1.10:/root/test.txt /root/test.txt
避免每次都輸入遠程密碼
方法一:
scp 默認使用 ssh, 每次傳輸都需要輸入遠程用戶的密碼,十分麻煩。但是如果兩台機器之間建立了信任關系后,則不需要輸入密碼,如下
首先在本機上生成配對密鑰
ssh-keygen -t rsa
然后將本機上的公鑰文件拷貝到遠程機器,並命名為 authorized_keys
scp /root.ssh/id_rsa.pub root@192.168.1.10:/root/.ssh/authorized_keys
以后再傳文件就不用輸入密碼了,包括使用 ssh, sftp 時,都不用輸入密碼了。
方法二:
安裝sshpass,scp結合sshpass可帶上密碼傳輸文件
sshpass -p mima scp root@149.xx.xx.xx:/var/log/tpcc_mysql.rtx a.rtx
這個方法有個缺點,還是需要每次都輸且會暴露明文密碼
注:IP不好記,也可以直接使用綁定的域名
參考鏈接
1. https://buzheng.org/2015/linux-scp-notes.html
2. https://blog.csdn.net/u012062455/article/details/78341540
3. 阿里雲幫助中心 https://help.aliyun.com/knowledge_detail/42523.html