Linux系統平常管理之rsync備份工具

                               rsync備份工具linux


1、scpvim

scp備份工具不能夠進行增量備份bash


一、安裝scpdom

[root@chenglinux ~]# yum install -y openssh-clientsssh


二、scp -r 192.168.21.98:/tmp/a/ ./a/
ide

  從遠程主機把/tmp/下面的a目錄拷貝到當前目錄下工具

  -r:以遞歸方式複製測試


三、[root@chenglinux cheng]# scp 1.txt 192.168.21.98:/root/cheng/ui

   把當前目錄下的文件拷貝到遠處主機的/root/cheng/目錄下spa


四、[root@chenglinux cheng]# scp 1.txt cheng@192.168.21.98:/tmp/cheng/

   把1.txt文件拷貝到遠程主機cheng這個用戶下


五、若是省略掉用戶名,那麼就會拷貝到當默認的用戶下,就是這邊是用的什麼用戶進行拷貝的,

那麼複方也就會是一樣的帳戶。若是對方主機沒有那個用戶,那麼久拷貝不成功

 

六、scp -r a/ 192.168.21.98:/tmp/b/

  把a目錄下的文件拷貝到遠程主機b目錄下,而不是把a目標拷貝到b目錄下


2、rsync備份工具,能夠把文件拷貝到遠程主機,能夠支持增量備份

一、默認沒有安裝,須要安裝:

   [root@linux2 ~]# yum install -y rsync

  同時還要安裝:openssh-clients否則沒法執行

二、rsync 命令格式

rsync [OPTION]... SRC  DEST

rsync -av 123.txt /tmp/

把123.txt同步到/tmp目錄下


rsync [OPTION]... SRC  [USER@]HOST:DEST

rsync -av 123.txt 192.168.0.101:/data/

把123.txt文件同步到192.168.0.101機器的/data/目錄下


rsync [OPTION]... [USER@]HOST:SRC  DEST

rsync 用戶名@ip地址:/tmp/1.txt /tmp/1.txt

把遠程主機/tmp/1.tx文件同步到本地來


rsync [OPTION]... [USER@]HOST::SRC  DEST
rsync [OPTION]... SRC  [USER@]HOST::DEST

這兩種使用了兩個冒號,這種方式和前面的方式的不一樣在於驗證方式不一樣,稍後寫到


rsync -av usr/ /tmp/123/

把user目錄拷貝的tmp下面,別切更名爲123



SRC:src是source的縮寫,也就是源代碼的意思。在這裏表示的是源文件地址

-a:同步數據時必定要保證數據原來的屬性不會改變


3、 rsync經常使用選項

-a 歸檔模式,表示以遞歸方式傳輸文件,並保持全部屬性,等同於-rlptgoD, -a選項後面能夠跟一個 --no-OPTION 這個表示關閉-rlptgoD中的某一個例如-a--no-l 等同於-rptgoD

-r 對子目錄以遞歸模式處理,主要是針對目錄來講的,若是單獨傳一個文件不須要加-r,可是傳輸的是目錄必須加-r選項

-v 打印一些信息出來,好比速率,文件數量等

-l 保留軟鏈結

-L 向對待常規文件同樣處理軟連接,若是是SRC中有軟連接文件,則加上該選項後將會把軟連接指向的目標文件拷貝到DST,等因而把真正的文件也拷貝過去了

-p 保持文件權限 

-o 保持文件屬主信息

-g 保持文件屬組信息

-D 保持設備文件信息

-t 保持文件時間信息

-z  在拷貝的時候進行壓縮

--delete 刪除那些DEST中有,可是SRC沒有的文件


--exclude=PATTERN 指定排除不須要傳輸的文件,等號後面跟文件名,能夠是萬用字符模式(如*.txt)

   rsync -av --exclude="*.txt" usr/ /tmp/123/ #同步的時候排除掉以.txt結尾的文件。

   過濾多個文件時,在-av後面直接添加--exclude="文件類型或者名稱"就能夠了


--progress 在同步的過程當中能夠看到同步的過程狀態,好比統計要同步的文件數量、同步的文件傳輸速度等等

     能夠寫成這樣:rsync -avP usr/ /tmp/123/

 

--bwlimit=100:控制同步帶寬,100指的是速度,能夠根據實際狀況來寫  


-u 加上這個選項後將會把DEST中比SRC還新的文件排除掉,不會覆蓋

最經常使用的 -a -v --delete --exclude 


-a --no-l -v:這個選項的做用就是在拷貝文件的時候不拷貝軟鏈接文件 


4、rsync選項講解

一、rsync -av   dir1/ dir2/    # 其中dir2/目錄能夠不存在,記得同步目錄時必定要在末尾加上/

-a :會把軟鏈接原本來本的拷貝過去

二、rsync -avL test1/ test2/ #加-L會拷貝軟鏈接文件對應的源文件到目標目錄裏面

三、-u 選項的做用是,若是目標文件比源文件新,那麼會忽略掉該文件 

touch test2/1.txt; rsync -avu test1/ test2/

四、rsync -av --delete test1/ test2/   #這樣會把test2/目錄比test1/目錄多出來的文件刪除掉

五、rsync -a --exclude=「2.txt」 test1/ test2/  #在同步的過程當中,會忽略掉2.txt這個文件

六、rsync -a --progress --exclude=「*.txt」 test1/ test2/  #--progress 顯示同步過程的詳細信息,--exclude後面也可使用通配符*


5、 rsync應用實例 - ssh方式

rsync -avL test1/ www@192.168.0.101:/tmp/test2/ 

rsync -avL 192.168.0.101:/tmp/test2/ ./test3/ 

因爲須要輸入密碼因此不適合寫到腳本中,但能夠經過建立祕鑰對,讓兩臺機器產生信任關係從而不用輸入密碼

一、在Linux2建立如下信息,須要注意的是在實驗中,Linux2主機是服務端

[root@linux2 ~]# mkdir .ssh
[root@linux2 ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
19:da:90:61:63:d7:94:65:7a:4d:ad:05:06:50:49:5a root@linux2
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
|      = .oo*Eo+o |
|     o =  o=.+  o|
|      o . o . .o |
|       + o .  .  |
|      . S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+
[root@linux2 ~]# ls .ssh
id_rsa  id_rsa.pub  known_hosts
[root@linux2 ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxCPm8bVIQohY/JWI9KBaHtKb+W4TnNL3Xg12CFj+h52yu0ixvANj+qrSq8xCXD47gNALGt4jzMmGIZQ8TxfRjMyBdNtRWswQR1oxefabMuehwBwmSnMD2g9dzY8r8eKXIEBkSGk5uycPooZJbTfRd0XJEfZFqlhey3PEW9HoOslj/kOGLWPXOdIDLh0oRDZe2QP5KOvhw6NQdyLiJPvEptss4qWr2DsV5reCQW/L7yEi1gxkLSYeFew0Xsia58Hy3GnYLP8PYlcopWIs0oSMhvCLJr/xw7IXFhnWfZaH/Iho5JT+8VoBdao2AjMG5yrNi4OOpldn8VijVgOJ/gd78w== root@linux2

把祕鑰複製到chenglinux機器上的/root/.ssh/authorized_keys文件中,若是chenglinux機器沒有.ssh目錄和authorized_keys文件須要建立。

二、因爲chenglinx這個機器上沒有.ssh目錄和authorized_keys文件,因此須要建立

[root@chenglinux ~]# mkdir .ssh
[root@chenglinux ~]# chmod 600 .ssh/
[root@chenglinux ~]# touch .ssh/authorized_keys
[root@chenglinux ~]# vim .ssh/authorized_keys


三、在Linux2主機上測試登陸chenglinx,結果顯示已經不要輸入密碼了。

[root@linux2 ~]# ssh root@192.168.21.99
Last login: Wed Jun  3 14:36:35 2015 from 192.168.21.100
[root@chenglinux ~]#


四、測試rsync同步,也沒有提示輸入密碼,因此成功了。

[root@linux2 ~]# rsync -av chengzelin.txt 192.168.21.99:/root/chengzelin.txt2
sending incremental file list
chengzelin.txt
sent 82 bytes  received 37 bytes  238.00 bytes/sec
total size is 78  speedup is 0.66
[root@linux2 ~]#

五、若是ssh端口不是22,那麼須要寫成這樣的形式

rsync -av -e "ssh -p port」  /dir1/ 192.168.0.101:/tmp/dir2/ 

六、sshd的配置文件位置

/etc/ssh/sshd_condfig

七、strace命令是用來追蹤進程的,默認沒有安裝,須要安裝


6、 rsync應用實例 - 後臺服務方式

一、全局配置文件

配置文件 /etc/rsyncd.conf ,內容以下:

#port=873        #監聽端口默認爲873,也能夠是別的端口

log file=/var/log/rsync.log  #指定日誌

pid file=/var/run/rsyncd.pid  #指定pid

#address=192.168.0.10  #能夠定義綁定的ip

二、模塊內的設置

[test]    #爲模塊名,自定義,模塊能夠有多個

path=/root/rsync  # 指定該模塊對應在哪一個目錄下

use chroot=true #是否限定在該目錄下,默認爲true,當有軟鏈接時,須要改成fasle

max connections=4  # 指定最大能夠鏈接的客戶端數

read only=no  #是否爲只讀

list=true  #是否能夠列出模塊名

uid=root #以哪一個用戶的身份來傳輸

gid=root  #以哪一個組的身份來傳輸

auth users=test #指定驗證用戶名,能夠不設置

secrets file=/etc/rsyncd.passwd #指定密碼文件,若是設定驗證用戶,這一項必須設置

hosts allow=192.168.0.101 #設置能夠容許訪問的主機,能夠是網段

須要注意的一點就是,通常只不須要指定用戶名和設置密碼,只須要指定hosts這個選項就能夠

三、密碼文件/etc/rsyncd.passwd的內容格式爲:username:password

四、啓動服務的命令是:rsync --daemon 

五、rsync -av chengzelin.txt 192.168.21.99::test/4.txt

   這個格式就是使用剛纔設定的模塊來同步文件,test就等於模塊設置中的rsync目錄,相似於一個別名(這裏就用到了前面所提到的格式了,就是這個格式:rsync [OPTION]... [USER@]HOST::SRC  DEST


默認去使用/etc/rsyncd.conf這個配置文件,也能夠指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf

可以使用的選項有: rsync --daemon --help

相關文章
相關標籤/搜索