兩個(gè)linux服務(wù)器間復(fù)制文件方式
兩個(gè)linux服務(wù)器間復(fù)制文件
scp是secure copy的簡(jiǎn)寫,用于在Linux下進(jìn)行遠(yuǎn)程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機(jī)進(jìn)行拷貝不能跨服務(wù)器。
1、命令格式:
scp [參數(shù)] [原路徑] [目標(biāo)路徑]
2、命令實(shí)例:
從本地服務(wù)器復(fù)制到遠(yuǎn)程服務(wù)器
(1) 復(fù)制文件:
復(fù)制到文件夾,不修改文件名,執(zhí)行命令后需要輸入密碼
源文件 目標(biāo)服務(wù)器用戶名 目標(biāo)ip 目標(biāo)文件夾(/file)
scp local_file remote_username@remote_ip:remote_folder ?
復(fù)制到文件夾并指定文件名,執(zhí)行命令后需要輸入密碼
remote_file(/file/test.txt) scp local_file remote_username@remote_ip:remote_file ?
復(fù)制到文件夾,不指定用戶,執(zhí)行命令后需要輸入用戶名、密碼
scp local_file remote_ip:remote_folder ?
復(fù)制到文件夾并指定文件名,執(zhí)行命令后需要輸入用戶名、密碼
scp local_file remote_ip:remote_file ?
(2) 復(fù)制目錄:
-r表示遞歸,復(fù)制整個(gè)目錄及目錄下文件到文件夾,執(zhí)行命令后需要輸入密碼
scp -r local_folder remote_username@remote_ip:remote_folder ?
-r表示遞歸,復(fù)制整個(gè)目錄及目錄下文件到文件夾,執(zhí)行命令后需要輸入用戶名、密碼
scp -r local_folder remote_ip:remote_folder
從遠(yuǎn)程服務(wù)器復(fù)制到本地服務(wù)器
從遠(yuǎn)程復(fù)制到本地的scp命令與上面的命令雷同,只要將從本地復(fù)制到遠(yuǎn)程的命令后面2個(gè)參數(shù)互換順序就行了。
遠(yuǎn)程服務(wù)器用戶名 遠(yuǎn)程ip 遠(yuǎn)程文件目錄 本地目錄
scp remote_username@remote_ip:remote_folder local_folder
同理也可復(fù)制文件/文件夾 目標(biāo)文件也可指定文件名
linux跨服務(wù)器復(fù)制文件(scp含腳本批量復(fù)制)
作為一名開發(fā),也需要干運(yùn)維的工作,有時(shí)需要將一個(gè)文件(jar包)批量拷貝到多臺(tái) Linux 服務(wù)器上。
如果逐臺(tái)scp命令拷貝,不僅需要更換ip,每次還需要輸入機(jī)器密碼,效率比較低下。
為提高效率,通過腳本方式實(shí)現(xiàn)將文件從一臺(tái) Linux 主機(jī)批量拷貝到多臺(tái)服務(wù)器,以下為實(shí)現(xiàn)方法。
1.純命令復(fù)制方式
1.1 單個(gè)文件復(fù)制
scp /home/xxyy/manageweb/xxyy-web.jar xxyy@192.168.1.180:/home/xxyy/manageweb/bak
1.2 文件夾復(fù)制
加上 -r 即可
scp -r demoDir/ root@192.168.0.180:/opt/soft/
2. 腳本方式批量分發(fā)
2.1 創(chuàng)建腳本文件 scp.sh
#!/bin/bash echo "拷貝情況如下:" > test.log n=`cat demoIplist.txt | wc -l` #分發(fā)的ip數(shù)量 fileName=demo-web.jar #分發(fā)文件名 echo "即將分發(fā)的文件:$fileName" for ((i=1; i <= $n; i++)) do passwd=`cat demoPassword.txt | head -$i | tail -1` ip=`cat demoIplist.txt | head -$i | tail -1` echo $ip ##自動(dòng)交互 expect <<EOF spawn scp $fileName xxyyzz@$ip:/home/xxyyzz/manageweb/bak/ expect "yes/no" {send "yes\n;exp_untinue"} expect "password" {send "$passwd\n"} expect eof EOF if [ $? -eq 0 ];then echo "$ip:成功" >>demoScpLog.log echo "$ip:成功" else echo "$ip:失敗" >>demoScpLog.log echo "$ip:失敗" fi done echo "復(fù)制完成!!!"
腳本解析:
- 1.循環(huán)執(zhí)行scp命令
- 2.循環(huán)切換demoIplist.txt中的目標(biāo)ip
- 3.循環(huán)輸入demoPassword.txt中的密碼
- 4.傳輸成功或失敗,均分別打印到控制臺(tái)和日志
2.2 創(chuàng)建分發(fā)目標(biāo)機(jī)器ip文件 demoIplist.txt
腳本循環(huán)讀取時(shí),會(huì)受換行符影響,需要注意刪除多余空行。
192.168.1.180 192.168.1.179
2.3 創(chuàng)建分發(fā)目標(biāo)機(jī)器password文件 demoPassword.txt
由于生產(chǎn)上,不能設(shè)置免密傳輸,所以需要設(shè)置密碼。另外,如果密碼含有特殊字符,腳本將執(zhí)行失敗。
lC1yM51Dqxu7eq5Y 13mUx1Uq6buG45mJ
2.4 執(zhí)行.sh文件
打印如下:
如上,即為腳本分發(fā)文件的方式。另外也可將文件名設(shè)置成文件可編輯的方式,會(huì)更加靈活,此處文件名固定方式就夠用了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
LNMP下添加Discuz x2.5的偽靜態(tài)規(guī)則
今天一個(gè)找我配置過 lnmp 環(huán)境的用戶要搭建 Discuz 論壇,但是發(fā)現(xiàn)不支持偽靜態(tài),倡萌沒怎么折騰過 Discuz,百度下才知道,原來軍哥的 LNMP 環(huán)境包自帶的 DZ 規(guī)則不適用于 Discuz x2.5,記錄下對(duì)應(yīng)的偽靜態(tài)規(guī)則2016-09-09Linux下sersync數(shù)據(jù)實(shí)時(shí)同步
這篇文章主要為大家詳細(xì)介紹了Linux下sersync數(shù)據(jù)實(shí)時(shí)同步的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Linux系統(tǒng)設(shè)置開機(jī)自動(dòng)運(yùn)行腳本的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)設(shè)置開機(jī)自動(dòng)運(yùn)行腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Linux系統(tǒng)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Linux?Autofs自動(dòng)掛載服務(wù)安裝部署教程
大家好,本篇文章主要講的是Linux?Autofs自動(dòng)掛載服務(wù)安裝部署教程,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下哦2021-11-11簡(jiǎn)單了解Linux性能監(jiān)控命令free
這篇文章主要介紹了簡(jiǎn)單了解Linux性能監(jiān)控命令free,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07在Ubuntu 16.10安裝mysql workbench報(bào)未安裝軟件包 libpng12-0錯(cuò)誤的解決方法
這篇文章主要介紹了在Ubuntu 16.10安裝mysql workbench報(bào)未安裝軟件包 libpng12-0錯(cuò)誤的解決方法的相關(guān)資料,需要的朋友可以參考下2016-11-11