兩個linux服務器間復制文件方式
目錄
- 兩個linux服務器間復制文件
- 從本地服務器復制到遠程服務器
- 從遠程服務器復制到本地服務器
- linux跨服務器復制文件(scp含腳本批量復制)
- 1.純命令復制方式
- 2. 腳本方式批量分發
- 總結
兩個linux服務器間復制文件
scp是secure copy的簡寫,用于在Linux下進行遠程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務器。
1、命令格式:
scp [參數] [原路徑] [目標路徑]
2、命令實例:
從本地服務器復制到遠程服務器
(1) 復制文件:
復制到文件夾,不修改文件名,執行命令后需要輸入密碼
源文件 目標服務器用戶名 目標ip 目標文件夾(/file)
scp local_file remote_username@remote_ip:remote_folder ?
復制到文件夾并指定文件名,執行命令后需要輸入密碼
remote_file(/file/test.txt)scp local_file remote_username@remote_ip:remote_file ?
復制到文件夾,不指定用戶,執行命令后需要輸入用戶名、密碼
scp local_file remote_ip:remote_folder ?
復制到文件夾并指定文件名,執行命令后需要輸入用戶名、密碼
scp local_file remote_ip:remote_file ?
(2) 復制目錄:
-r表示遞歸,復制整個目錄及目錄下文件到文件夾,執行命令后需要輸入密碼
scp -r local_folder remote_username@remote_ip:remote_folder ?
-r表示遞歸,復制整個目錄及目錄下文件到文件夾,執行命令后需要輸入用戶名、密碼
scp -r local_folder remote_ip:remote_folder
從遠程服務器復制到本地服務器
從遠程復制到本地的scp命令與上面的命令雷同,只要將從本地復制到遠程的命令后面2個參數互換順序就行了。
遠程服務器用戶名 遠程ip 遠程文件目錄 本地目錄
scp remote_username@remote_ip:remote_folder local_folder
同理也可復制文件/文件夾 目標文件也可指定文件名
linux跨服務器復制文件(scp含腳本批量復制)
作為一名開發,也需要干運維的工作,有時需要將一個文件(jar包)批量拷貝到多臺 Linux 服務器上。
如果逐臺scp命令拷貝,不僅需要更換ip,每次還需要輸入機器密碼,效率比較低下。
為提高效率,通過腳本方式實現將文件從一臺 Linux 主機批量拷貝到多臺服務器,以下為實現方法。
1.純命令復制方式
1.1 單個文件復制
scp /home/xxyy/manageweb/xxyy-web.jar [email protected]:/home/xxyy/manageweb/bak
1.2 文件夾復制
加上 -r 即可
scp -r demoDir/ [email protected]:/opt/soft/
2. 腳本方式批量分發
2.1 創建腳本文件 scp.sh
#!/bin/bashecho "拷貝情況如下:" > test.logn=`cat demoIplist.txt | wc -l` #分發的ip數量fileName=demo-web.jar #分發文件名echo "即將分發的文件:$fileName"for ((i=1; i <= $n; i++))dopasswd=`cat demoPassword.txt | head -$i | tail -1`ip=`cat demoIplist.txt | head -$i | tail -1`echo $ip##自動交互expect <<EOFspawn scp $fileName xxyyzz@$ip:/home/xxyyzz/manageweb/bak/expect "yes/no" {send "yes\n;exp_untinue"}expect "password" {send "$passwd\n"}expect eofEOFif [ $? -eq 0 ];thenecho "$ip:成功" >>demoScpLog.logecho "$ip:成功"elseecho "$ip:失敗" >>demoScpLog.logecho "$ip:失敗"fi doneecho "復制完成!!!"
腳本解析:
- 1.循環執行scp命令
- 2.循環切換demoIplist.txt中的目標ip
- 3.循環輸入demoPassword.txt中的密碼
- 4.傳輸成功或失敗,均分別打印到控制臺和日志
2.2 創建分發目標機器ip文件 demoIplist.txt
腳本循環讀取時,會受換行符影響,需要注意刪除多余空行。
192.168.1.180192.168.1.179
2.3 創建分發目標機器password文件 demoPassword.txt
由于生產上,不能設置免密傳輸,所以需要設置密碼。另外,如果密碼含有特殊字符,腳本將執行失敗。
lC1yM51Dqxu7eq5Y13mUx1Uq6buG45mJ
2.4 執行.sh文件
打印如下:
如上,即為腳本分發文件的方式。另外也可將文件名設置成文件可編輯的方式,會更加靈活,此處文件名固定方式就夠用了。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。
相關文章: