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