遠程操控批量復制應用(scp/pssh/pscp.pssh/rsync/pslurp)


scp命令:

scp [options] SRC... DEST/
兩種方式:

  • scp [options] [user@]host:/sourcefile /destpath
  • scp [options] /sourcefile [user@]host:/destpath
常用選項:
-C 壓縮數據流
-r 遞歸復制
-p 保持原文件的屬性信息
-q 靜默模式
-P PORT 指明remote host的監聽的端口

示例一:

scp root@192.168.34.100:/data/f1  /data/    從192.168.34.100機器的/data/目錄下復制f1文件到本地/data/目錄下。
scp  /data/f1  192.168.34.100:/data/             將本地data下的文件復制到100的data目錄下。

示例二:

也可以在基於key驗證后,不需要輸入口令,直接從本地遠程機器一將文件復制到遠程機器二上去:

scp 192.168.34.100:/data/f1  192.168.34.101:/data/ 
將192.168.34.100的data下的f1文件復制到遠程機器data下,實現遠程操作兩個機器。

示例三:

scp -r  /data/bak/ 192.168.34.100:/data/                 將data下bak目錄以下的所有文件復制到100IP的data下
scp -r  192.168.34.100:/data/bak  192.168.34.200:/data/             將IP100的data下bak目錄復制到200IP的data下,實現遠程操作兩個機器功能rsync命令:

rsync命令:

(1)是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件。

(2)rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。

(3)rsync是一個功能非常強大的工具,其命令也有很多功能特色選項,我們下面就對它的選項一一進行分析說明。

(4)基於ssh和rsh服務實現高效率的遠程系統之間復制文件

 使用安全的shell連接做為傳輸方式

rsync -av /etc  server1:/tmp    因為/etc后面沒有/,就會復制目錄和目錄下文件
rsync -av /etc/ server1:/tmp    因為/etc/后面有/,只復制目錄下文件

 比scp更快,只復制不同的文件

 常用選項:

-n 模擬復制過程

-v 顯示詳細過程

-r 遞歸復制目錄樹

-p 保留權限

-t 保留時間戳

-g 保留組信息

-o 保留所有者信息

-l 將軟鏈接文件本身進行復制(默認)

-L 將軟鏈接文件指向的文件復制

-a 存檔,相當於–rlptgoD,但不保留ACL(-A)和SELinux屬性(-X)

rsync和scp復制類似,但是rsync復制的更快,后綴不加/,就會復制不同文件的目錄,復制效率更高。

示例:

rsync  192.168.34.100:/data/test /data/    將192.168.34.100的/data/test目錄文件都復制到本地/data/下,注意test后面沒有/代表復制了整個目錄
rsync  192.168.34.100:/data/test/ /data/   如果帶了/只是將test下面的文件復制到本地data目錄下,不包含test目錄文件名。

pssh工具

pssh是一個python編寫可以在多台服務器上執行命令的工具,也可實現文件復制

選項如下:

--version:查看版本

-h:主機文件列表,內容格式”[user@]host[:port]”

-H:主機字符串,內容格式”[user@]host[:port]”

-A:手動輸入密碼模式

-i:每個服務器內部處理信息輸出

-l:登錄使用的用戶名

-p:並發的線程數【可選】

-o:輸出的文件目錄【可選】

-e:錯誤輸入文件【可選】

-t:TIMEOUT 超時時間設置,0無限制【可選】

-O:SSH的選項

-P:打印出服務器返回信息

-v:詳細模式

安裝pssh包: 

yum install pssh

 示例:

 在遠程連接多個主機操作時,需要實現key驗證功能,不需要密碼就會直接執行當前的操作。

pssh -H "192.168.34.100 192.168.34.200" -A -i ifconfig eth0   遠程連接兩個IP主機並手動輸入密碼將IP地址打印出來,如果不輸入-A就會基於KEY驗證,不需要輸入密碼。
pssh -h iplist.txt   -i ifconfig eh0     也支持輸出文件的格式進行遠程連接。 
[root@centos7.ssh]#pssh -H "192.168.34.100 192.168.34.200" -A -i rm -rf /data/*  對遠程主機執行刪除命令,命令有-A,需要輸入口令遠程操作刪除文件。
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 19:02:10 [SUCCESS] 192.168.34.100
[2] 19:02:10 [SUCCESS] 192.168.34.200

也可以將IP地址寫入iplist.txt文件中,直接調用文件加-h批量遠程操作:

 cat iplist.txt
       192.168.34.100
       192.168.34.200
       192.168.34.101
1)pssh -h iplist.txt -i useradd nginx     遠程連接IP多個地址批量創建賬號
2)pssh -h iplist.txt -i 'rm -rf /data/*'  遠程刪除指定的多個IP地址data目錄下的文件,注意加上單引號,加上雙引號只會識別本地內容,不加則無法識別。
3)pssh -h iplist.txt -i '$HOSTNAME'
4)pssh -H 192.168.1.10 -o /app -e /app -i “hostname” 將標准錯誤和標准正確重定向都保存至/app目錄下

pscp.pssh命令

pscp.pssh功能是將本地文件批量復制到遠程主機

pscp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o

outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote

pscp.pssh選項

-v 顯示復制過程

-r 遞歸復制目錄

示例:

pscp.pssh  -h /root/iplist.txt  /data/f1.sh  /data/  將本地data下的f1.sh文件復制到其他(iplist為遠程主機的IP地址)data下。
pscp.pssh -H 192.168.1.10 /root/test/  /data/    將本地的test文件復制到遠程192.168.1.10主機下的data下。 
pscp.pssh -H 192.168.1.10 /root/f1.sh /root/f2.sh /data/  將本地的root下多個文件復制到192.168.1.10主機data下。
pscp.pssh -H 192.168.1.10 -r /root/test/ /data/    將本地的目錄復制到192.168.1.10主機的data下。

pslurp命令

pslurp功能是將遠程主機的文件批量復制到本地

pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par]

[-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] remote local(本地名)

pslurp選項

-L 指定從遠程主機下載到本機的存儲的目錄,local是下載到本地后的名稱

-r 遞歸復制目錄

示例:

pslurp -H 192.168.1.10 -L /data/ /etc/passwd user  批量下載目標服務器的passwd文件至/data下,並更名為user
pslurp  -h /root/iplist.txt -L /data/ /data/f1   f1.bak    iplist.txt里邊有遠程主機的IP地址,然后將遠程主機的/data/f1文件復制到本機的/data/下取名叫f1.bak 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM