10.28 rsync工具介紹linux
10.29/10.30 rsync經常使用選項ssh
10.31 rsync經過ssh同步工具
10.28 rsync工具介紹:ui
linux文件同步工具rsync rsync很實用,也很重要日誌
像咱們從A機器到B機器,咱們去傳輸文件、遠程備份一些數據。ip
也能夠從本機傳輸,像從A目錄到B目錄,相似於cp,但不同rem
假設一個場景,咱們要每小時從A目錄拷貝到B目錄一次,而A目錄在不停的增長。這時候,咱們用cp就不合適了,由於不方便浪費時間,還浪費磁盤不停的讀寫。而rsync就適合這種場景,他只同步一些更新的文件,還支持遠程的同步(A級器到B機器)同步
~1. rsync -av /etc/passwd /tmp/123.txt 將passwd文件拷貝到tmp下,並更名叫123.txttest
[root@axinlinux-01 system]# rsync -av /etc/passwd /tmp/123.txtmodule
sending incremental file list
passwd 輸出文件
sent 1,071 bytes received 35 bytes 2,212.00 bytes/sec
發送了多少個字節 多少字節每秒
total size is 979 speedup is 0.89
一共有多大 速度是多少
~2. rsync /etc/passwd root@192.168.159.130:/tmp/123.txt 遠程去拷貝、同步。A機器到B機器之間的同步、拷貝
前面寫輸出文件路徑,後面跟對方機器的用戶名,而後在@對方的IP,再:,最後爲他輸入的路徑
~3. rsync 的格式:
rsync [OPTION(選項)] ... SRC(源目錄)DEST(目標目錄或目標文件) 本機格式,以上~1.就是這種格式
rsync [OPTION] ...SRC [user@]host:DEST user@是能夠省略的,在本機模式中,省略後是以當前用戶做爲輸入用戶。host爲他的IP 以上~2.就是這種模式
rsync [OPTION] [user@]host:SRC DEST 反拷貝。遠程的目錄或文件,拷貝到本機的目錄下。先寫user@IP:跟他的輸出文件。後面寫輸入路徑或文件
----------------------------------------------------------------------------------------------------------------------------------------------------
10.29/10.30 rsync經常使用選項:
~ -a 包含-rtplgoD
-a包含-r t p l g o D選項
~ -r 同步目錄是要加上,相似cp時的-r選項
~ -v 同步是顯示一些信息,讓咱們知道同步的過程
~ -l 保留軟鏈接
~ -L 加上該選項後,同步軟鏈接時會把源文件給同步
與-l的區別。若是A傳到B,加上l也會同步軟鏈接,但B上沒有A機器上的軟連接指向的源文件,同樣也不能使用軟鏈接。加上-L會防止這樣狀況發生,會把軟鏈接的源文件一塊兒給同步過去
~ -p(小寫) 保持文件的文件的權限屬性
好比700、645等等的權限屬性,在這是什麼權限,在那就是什麼權限
~ -o 保持文件的屬主
假如在這是www用戶,在那就是www用戶。若是沒有www用戶,就會顯示puid。
~ -g 保持文件的屬組
假如在這是root屬組,在那就是root屬組
~ -D 保持設備文件信息
瞭解便可
~ -t 保持文件的時間屬性
像mtime、ctime等等保留過去
~ --delete 刪除DEST中SRC沒有的文件 (頗有用)
刪除目標文件中源文件所沒有的文件。假如,A到B。B文件中有123,A沒有。同步過去的時候,爲保持一致,會刪除B中的123,因此,A和B徹底同樣
~ --exclude 過濾指定文件,如--exclude 「logs」會把文件名包含logs的文件或目錄過濾掉,不一樣步
假如文件中有日誌,可是日誌對於目標文件沒用。加上--exclude後面跟要排除的文件的名字
~ -P(大寫) 顯示同步過程,好比速率,比-v更加詳細
好比文件很大,咱們不知道是否卡死,可加上-P
~ -u 加上該選項後,若是DEST中的文件比SRC新,則不一樣步
假如,咱們目標文件的mtime比源文件新。(可理解爲,咱們以前對目標文件作過更改,目標文件比源文件更有價值。而源文件比較舊。那麼則不一樣步)創建在咱們的須要是 以新的爲主
~ -z 傳輸是壓縮
zip的意思。爲的是傳輸的時候更快,節省帶寬。傳輸的過程會壓一下,傳到目標文件的時候,就自動解壓了。只不過是爲了節省帶寬而已
(10.30 rsync) 實例:
-av
[root@axinlinux-01 sed]# rsync -av /root/sed/ /tmp/sed_dest/ 凡是同步目錄的時候,都要在源目錄和目標目錄後面加 / 意思就是,把/root/sed/同步到tmp下,而且該名字爲sed_dest
sending incremental file list
./
1.txt
test.txt
test.txt.bak
x
2/
sent 2,288 bytes received 103 bytes 4,782.00 bytes/sec
total size is 1,946 speedup is 0.81
-avL
[root@axinlinux-01 ~]# rsync -avL /tmp/11.txt /root/sed/ 在-av後面加L,可把a裏面包含的l覆蓋掉。L是這樣用的
sending incremental file list
11.txt 會提示11.txt這個文件有軟鏈接,一塊兒同步過去
sent 131 bytes received 35 bytes 332.00 bytes/sec
total size is 39 speedup is 0.23
--delete
[root@axinlinux-01 ~]# touch /tmp/sed_dest/new.txt 咱們如今目標目錄下touch一個多文件
[root@axinlinux-01 ~]# rsync -av --delete /root/sed/ /tmp/sed_dest 加上-delete
sending incremental file list
deleting new.txt 會提示這個多餘的文件
./
1.txt
11.txt
sent 352 bytes received 69 bytes 842.00 bytes/sec
total size is 2,011 speedup is 4.78
[root@axinlinux-01 ~]# ls /tmp/sed_dest 咱們在ls一下,發現new.txt就沒有了
11.txt 1.txt 2 test.txt test.txt.bak x
--exclude (也支持多個--exclude過濾)
[root@axinlinux-01 ~]# rsync -av --exclude "*.txt" /root/sed/ /tmp/sed_dest 過濾掉全部的txt文件
sending incremental file list
./ 在這就能夠發現沒有txt文件
test.txt.bak
x
2/
sent 1,190 bytes received 65 bytes 2,510.00 bytes/sec
total size is 980 speedup is 0.78
[root@axinlinux-01 ~]# ls !$ ls看一下
ls /tmp/sed_dest
2 test.txt.bak x
[root@axinlinux-01 ~]# touch /root/sed/axin.txt 咱們先touch一個文件,在--exclude
[root@axinlinux-01 ~]# rsync -av --exclude "*.txt" --exclude "axin*" /root/sed/ /tmp/sed_dest 也支持多個--exclude
sending incremental file list
./
sent 121 bytes received 20 bytes 282.00 bytes/sec
total size is 980 speedup is 6.95
[root@axinlinux-01 ~]# ls !$
ls /tmp/sed_dest
2 test.txt.bak x
-P
[root@axinlinux-01 ~]# rsync -avP --delete /root/sed/ /tmp/sed_dest
sending incremental file list
./
1.txt
39 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=6/8)
11.txt
39 100% 38.09kB/s 0:00:00 (xfr#2, to-chk=5/8)
axin.txt
0 100% 0.00kB/s 0:00:00 (xfr#3, to-chk=4/8)
test.txt
953 100% 930.66kB/s 0:00:00 (xfr#4, to-chk=3/8)
test.txt.bak
980 100% 957.03kB/s 0:00:00 (xfr#5, to-chk=2/8)
x
0 100% 0.00kB/s 0:00:00 (xfr#6, to-chk=1/8)
2/
sent 2,475 bytes received 141 bytes 5,232.00 bytes/sec
total size is 2,011 speedup is 0.77
-u
[root@axinlinux-01 ~]# vi /tmp/sed_dest/1.txt 咱們先修改一下目標文件1.txt。知足他事假上的一個環境
[root@axinlinux-01 ~]# rsync -avPu --delete /root/sed/ /tmp/sed_dest 加-u試一下
sending incremental file list
./
sent 211 bytes received 20 bytes 462.00 bytes/sec
total size is 2,011 speedup is 8.71
[root@axinlinux-01 ~]# cat /tmp/sed_dest/1.txt cat一下,發現是修改後的。也就是加-u會保護你修改過的目標文件
tmpttttttttttttttttttttttttttt
----------------------------------------------------------------------------------------------------------------------------------------------------
10.31 rsync經過ssh同步:
rsync經過ssh方式同步(A到B,A和B都要安裝rsync)
~1. rsync -av test1/ 192.168.159.130:/tmp/test2/
咱們給另外一臺機器同步數據
[root@axinlinux-01 ~]# rsync -avPu /root/sed/ 192.168.159.130:/tmp/sed_dest 不指定用戶的話就是對方的root用戶
root@192.168.159.130's password: 要輸入密碼
sending incremental file list
created directory /tmp/sed_dest
./
1.txt
39 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=6/8)
11.txt
39 100% 38.09kB/s 0:00:00 (xfr#2, to-chk=5/8)
axin.txt
0 100% 0.00kB/s 0:00:00 (xfr#3, to-chk=4/8)
test.txt
953 100% 930.66kB/s 0:00:00 (xfr#4, to-chk=3/8)
test.txt.bak
980 100% 957.03kB/s 0:00:00 (xfr#5, to-chk=2/8)
x
0 100% 0.00kB/s 0:00:00 (xfr#6, to-chk=1/8)
2/
sent 2,475 bytes received 177 bytes 408.00 bytes/sec
total size is 2,011 speedup is 0.76
咱們B機器上看一下,有沒有傳過來
[root@aminglinux-02 ~]# ls /tmp/sed_dest 是有的
11.txt 1.txt 2 axin.txt test.txt test.txt.bak x
~2. rsync -av -e "ssh -p 22" test1/ 192.168.159.130:/tmp/test2/
咱們有時候的端口可能不是默認的22端口,那咱們能夠給他指定端口。 -e "ssh -p 22"
[root@axinlinux-01 ~]# rsync -avPu -e "ssh -p 22" /root/sed/ /tmp/sed_dest
sending incremental file list
./
1.txt
39 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=6/8)
11.txt
39 100% 38.09kB/s 0:00:00 (xfr#2, to-chk=5/8)
axin.txt
0 100% 0.00kB/s 0:00:00 (xfr#3, to-chk=4/8)
test.txt
953 100% 930.66kB/s 0:00:00 (xfr#4, to-chk=3/8)
test.txt.bak
980 100% 957.03kB/s 0:00:00 (xfr#5, to-chk=2/8)
x
0 100% 0.00kB/s 0:00:00 (xfr#6, to-chk=1/8)
2/
sent 2,479 bytes received 141 bytes 5,240.00 bytes/sec
total size is 2,011 speedup is 0.77
rsync經過服務的方式同步
要編輯配置文件 /etc/rsyncd.conf
啓動服務rsync --daemon
格式: rsync -av test1/ 192.168.159.130::module/dir/