溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

兩個linux服務(wù)器間怎么復(fù)制文件

發(fā)布時間:2023-04-28 11:52:34 來源:億速云 閱讀:113 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“兩個linux服務(wù)器間怎么復(fù)制文件”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

兩個linux服務(wù)器間復(fù)制文件

scp是secure copy的簡寫,用于在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ù)制整個目錄及目錄下文件到文件夾,執(zhí)行命令后需要輸入密碼

scp -r local_folder remote_username@remote_ip:remote_folder

-r表示遞歸,復(fù)制整個目錄及目錄下文件到文件夾,執(zhí)行命令后需要輸入用戶名、密碼

scp -r local_folder remote_ip:remote_folder

從遠(yuǎn)程服務(wù)器復(fù)制到本地服務(wù)器

從遠(yuǎn)程復(fù)制到本地的scp命令與上面的命令雷同,只要將從本地復(fù)制到遠(yuǎn)程的命令后面2個參數(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)維的工作,有時需要將一個文件(jar包)批量拷貝到多臺 Linux 服務(wù)器上。

如果逐臺scp命令拷貝,不僅需要更換ip,每次還需要輸入機(jī)器密碼,效率比較低下。

為提高效率,通過腳本方式實(shí)現(xiàn)將文件從一臺 Linux 主機(jī)批量拷貝到多臺服務(wù)器,以下為實(shí)現(xiàn)方法。

1.純命令復(fù)制方式

1.1 單個文件復(fù)制

scp /home/xxyy/manageweb/xxyy-web.jar xxyy@192.168.1.180:/home/xxyy/manageweb/bak

兩個linux服務(wù)器間怎么復(fù)制文件

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
##自動交互
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.傳輸成功或失敗,均分別打印到控制臺和日志

2.2 創(chuàng)建分發(fā)目標(biāo)機(jī)器ip文件 demoIplist.txt

腳本循環(huán)讀取時,會受換行符影響,需要注意刪除多余空行。

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文件

打印如下:

兩個linux服務(wù)器間怎么復(fù)制文件

如上,即為腳本分發(fā)文件的方式。另外也可將文件名設(shè)置成文件可編輯的方式,會更加靈活,此處文件名固定方式就夠用了。

“兩個linux服務(wù)器間怎么復(fù)制文件”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI