最近想把數(shù)據(jù)集放在另一個服務器上,但是如果先下載到本地然后再上傳過去,則需要浪費好久時間。
特總結下如何快捷的通過命令完成不同遠程服務器之間的文件傳輸,以及遇到的問題。
SCP命令
Linux scp 命令用于 Linux 之間復制文件和目錄。1
scp 是 secure copy 的縮寫, scp 是 linux 系統(tǒng)下基于 ssh 登陸進行安全的遠程文件拷貝命令。
scp 是加密的,rcp 是不加密的,scp 是 rcp 的加強版。
單個文件的傳輸
scp /home/src/1.py username@xxx.xx.xx.xx:/home/des/
-
/home/src/1.py
: 當前命令行所在的主機上的某個文件 -
username
: 目標服務器的用戶名 -
xxx.xx.xx.xx
: 目標服務器的IP地址,scp默認連接的遠端主機22端口 -
/home/des/
: 目標服務器上的文件位置
將這些信息換成自己的就可以了。
整個文件夾的傳輸
scp -r /home/src/ username@xxx.xx.xx.xx:/home/des/
指定端口傳輸
如果目標服務器是一個docker,也就是需要指定特定端口號,則指定參數(shù)-P
即可, 如下:
scp -P 18888 -r /home/src/ username@xxx.xx.xx.xx:/home/des/
-
18888
: 表示docker鏡像對應的的端口號
需要注意的問題
- 指定端口傳輸,需注意是參數(shù)大寫的
P
. - 傳輸需要保證源文件或文件夾是可讀的,目標文件夾是可寫的,否則會報如下
Permission denied, please try again
可通過chmod命令暫時修改權限為766,也就是rwx rw- rw-
chmod 766 xxx.txt
然后再改回來(通常文件默認是rwx r-x r-x
)
chmod 755 xxx.txt
傳輸內(nèi)容為大量的小文件
當所傳輸?shù)奈募A中包含大量的小文件,比如數(shù)據(jù)集(有很多張圖片),這時候使用SCP速度會很慢,因為每傳輸一個文件都需要進行 協(xié)議信息確認以及傳輸結束后的確認信息,這樣的開銷是非常大的.
因此通常會結合tar命令打包,然后在發(fā)送,能夠節(jié)省很多倍速度文章來源:http://www.zghlxwxcb.cn/news/detail-417286.html
cd 需要打包的文件夾
tar cf - * | ssh -p 10086 username@xxx.xx.xx.xx "cd /home/des/ && tar xf -"
-
Linux scp命令 ??文章來源地址http://www.zghlxwxcb.cn/news/detail-417286.html
到了這里,關于SCP命令在不同遠程服務器之間發(fā)送文件(指定端口、大量小文件操作)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!