scp是secure copy
的簡寫, 是 linux 系統下基於 ssh 登陸進行安全的遠端檔案拷貝指令。 scp 是加密的,rcp 是不加密的,scp 是 rcp 的加強版。
因為scp傳輸是加密的,可能會稍微影響一下速度。另外,scp還非常不佔資源,不會提高多少系統負荷,在這一點上,rsync就遠遠不及它了。雖然 rsync比scp會快一點,但當小檔案眾多的情況下,rsync會導致硬碟I/O非常高,而scp基本上不影響系統正常使用。
場景:假設我現在有兩台伺服器(這裡的公網ip和內網ip相互傳都可以,當然用內網ip互相傳比較快,**公網ip不便公佈)
Sessions1: 47.95.208.2** 内网:172.17.31.174 User:root Sessions2: 47.94.92.2** 内网:172.17.31.173 User:root
這裡常用的兩種方法:
現在我們登入172.17 .31.173這台伺服器,想把目前的 test.mysql
傳給別人( 172.17.31.174
這台伺服器)
hostname -i
可以查看目前ip
#指令:
scp test.sql root@172.17.31.174:/data/
如果兩台伺服器直接沒有設定免密登入的話需要輸入密碼。
這裡的ip我用的是內網ip,所以傳的快點兒,走公網的話就慢很多(親測)
傳輸完成!
在ip為後綴174的伺服器查看一下:
#附錄:
scp [可選參數] file_source file_target
常用的-r,-C
-1: 强制scp命令使用协议ssh2 -2: 强制scp命令使用协议ssh3 -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)的选项。
在173服務data目錄中新建一個local_test 用來測試資料夾(測試-r參數的)
#然後轉到本機伺服器(*174這台),這裡的本機伺服器是相對的。
指令:
scp -r root@172.17.31.173:/data/local_test /data/
拷貝資料夾則需要在scp後面加上-r
大白話說明:
scp root@远程的服务器Ip:文件路径 存放路径
在遠端伺服器上拷貝到本機伺服器(登入遠端伺服器傳給別人(本地)檔案檔案)
#指令:
scp test.sql root@172.17.31.174:/data/
需要別人(本地)的ip位址傳輸
在本機伺服器登錄,從遠端伺服器取得檔案(自己主動去別人哪裡取得檔案)
指令:
scp -r root@172.17.31.173:/data/local_test /data/
需要遠端ip(別人)位址取得檔案
以上是Linux怎麼在兩台伺服器直接傳文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!