Linux 期中架構 rsync

上篇python

 

 

Rsyncweb

rysnc查看版本   --version面試

 

 

 

 

全量  與增量在效率上有區別算法

cp mv scp  --全量複製shell

rsync       --增量複製vim

rsync利用的是quick check算法安全

 

 

 

 

 

rsync能夠替換的命令   scp   cp  ls   rmbash

 

cp與rsync   rsyncs 是增量部分  利用quick check算法服務器

 

 

cp文件架構

[root@backup ~]# cp /etc/hosts /oldboy_dir/

[root@backup ~]# ls /oldboy_dir/

hosts

[root@backup ~]# rm -fr /oldboy_dir/hosts

[root@backup ~]# rsync /etc/hosts /oldboy_dir/

[root@backup ~]# ll /oldboy_dir/

total 4

-rw-r--r-- 1 root root 379 May  3 10:12 hosts

 

cp目錄

注意帶/和不帶/的區別

注意此處帶/和不帶/的區別     帶/ 是拷貝了oldboy_dir下的文件      目錄下的內容

不帶/   是拷貝oldboy_dir這個文件夾     目錄及其數據

 

 

[root@backup ~]# cp -a /oldboy_dir/ /tmp/

[root@backup ~]# ls /tmp/

etc  etc.tar.gz  oldboy_dir  yum.log

[root@backup ~]# rm -fr /tmp/oldboy_dir/

[root@backup ~]# ls /tmp/

etc  etc.tar.gz  yum.log

[root@backup ~]# rsync -a /oldboy_dir/ /tmp/

[root@backup ~]# ls /tmp/

10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  etc  etc.tar.gz  yum.log

[root@backup ~]# rsync -a /oldboy_dir /tmp/

[root@backup ~]# ls /tmp/

10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  etc  etc.tar.gz  oldboy_dir  yum.log

ls 與rsync

[root@backup ~]# ls /oldboy/

ext  jeacen  oldboy  test  wodi.gz  xiaodong  xiaofan  xingfujie  yingsui.gz

[root@backup ~]# rsync /oldboy/

drwxr-xr-x        4096 2018/03/24 11:53:23 .

-rw-r--r--           0 2018/03/24 11:53:23 jeacen

-rw-r--r--           0 2018/03/24 11:53:23 oldboy

-rw-r--r--           0 2018/03/24 11:53:23 wodi.gz

-rw-r--r--           0 2018/03/24 11:53:23 yingsui.gz

drwxr-xr-x        4096 2018/03/24 11:53:23 ext

drwxr-xr-x        4096 2018/03/24 11:53:23 test

drwxr-xr-x        4096 2018/03/24 11:53:23 xiaodong

drwxr-xr-x        4096 2018/03/24 11:53:23 xiaofan

drwxr-xr-x        4096 2018/03/24 11:53:23 xingfujie

   

 

rm與rsync

rm

[root@backup oldboy_dir]# touch {1..10}.txt

[root@backup oldboy_dir]# ls

10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

[root@backup oldboy_dir]# cd

[root@backup ~]# rm -fr /oldboy_dir/*

[root@backup ~]# ls /oldboy_dir/

[root@backup ~]# touch /oldboy_dir/{1..10}.txt

[root@backup ~]# ls /oldboy_dir/

10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

rysnc

[root@backup ~]# mkdir /null

[root@backup ~]# rsync --delete -r  /null /oldboy_dir/

[root@backup ~]# ls /oldboy_dir/

10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  null

[root@backup ~]# rsync --delete -r  /null/  /oldboy_dir/

[root@backup ~]# ll /oldboy_dir/

total 0

注意此處的--delete屬性   能夠快速清空,效率高,刪除大文件

scp與rsync

拷貝文件:

[root@backup ~]# scp -rp /etc/hosts 172.16.1.31:/tmp/

The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.

RSA key fingerprint is c8:17:90:8d:90:a4:f7:5b:10:19:36:7a:6c:5d:b8:7b.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '172.16.1.31' (RSA) to the list of known hosts.

root@172.16.1.31's password:

hosts                                                                             100%  379     0.4KB/s   00:00   

[root@backup ~]# rsync -rp /etc/hosts 172.16.1.31:/tmp/

root@172.16.1.31's password:

拷貝目錄:

scp拷貝172.16.1.31下的history目錄

[root@backup ~]# scp -rp 172.16.1.31:/home/history /backup/

 

 

 

注意  此處history後加不加/    效果是同樣的

 

rsync拷貝172.16.1.31下的history目錄

注意此處帶/和不帶/的區別     帶/ 是拷貝了history下的文件      目錄下的內容

不帶/   是拷貝history這個文件夾     目錄及其數據

 

 [root@backup ~]# rsync -rp 172.16.1.31:/home/history/ /backup/

root@172.16.1.31's password:

[root@backup ~]# cd /backup/

[root@backup backup]# ls

0329.txt  dec.py         delphi.py  func.py             home   luna.py  nod.py.bak  python     seq.txt  test.txt

b.txt     dectorator.py  func1.py   history0330.tar.gz  hosts  nod.py   passwd.txt  python.py  test.py

[root@backup backup]# rm -fr *

[root@backup backup]# ls

[root@backup backup]# cd

[root@backup ~]# rsync -rp 172.16.1.31:/home/history /backup/

root@172.16.1.31's password:

[root@backup ~]# cd /backup/

[root@backup backup]# ls

history

 

總結: rsync命令不只能夠替換cp scp rm ls 命令 並且比他們的四個命令更爲優秀

利用rsync刪除目錄下的數據要比rm刪除目錄中的數據效率高

===============================================

03. rsync服務特色說明

1)支持拷貝普通文件與特殊文件如連接文件,設備等。

2)能夠有排除指定文件或目錄同步的功能,至關於打包命令tar的排除功能。

       #tar zcvf backup_1.tar.gz  /opt/data  -exclude=oldboy    

      說明:在打包/opt/data時就排除了oldboy命名的目錄和文件。

3)能夠作到保持原文件或目錄的權限、時間、軟硬連接、屬主、組等全部屬性均不改變-p。

 

4)可實現增量同步,既只同步發生變化的數據,所以數據傳輸效率很高(tar -N)。

       # 將備份/home 目錄自 2008-01-29 以來修改過的文件

       # tar -N 2008-01-29 -zcvf /backups/inc-backup_$(date +%F).tar.gz /home

       # 將備份 /home 目錄昨天以來修改過的文件

       # tar -N $(date -d yesterday "+%F") -zcvf /backups/inc-backup_$(date +%F).tar.gz /home

       # 添加文件到已經打包的文件

       # tar -rf all.tar *.gif

       說明:這條命令是將全部.gif的文件增長到all.tar的包裏面去。-r是表示增長文件的意思。

5)可使用rcp,rsh,ssh等方式來配合進行隧道加密傳輸文件(rsync自己不對數據加密)

6)能夠經過socket(進程方式)傳輸文件和數據(服務端和客戶端)*****。重點掌握  監聽模式

7)支持匿名的或認證(無需系統用戶)的進程模式傳輸,可實現方便安全的進行數據備份及鏡像。

Rsync的企業工做場景說明

 

1  利用定時任務+rsync方式實現數據同步

對於網站內部技術人員建立的數據材料,能夠採用定時任務的方式

 

2  利用實時任務+rsync方式實現數據同步

對於網站外部訪問用戶建立的數據,能夠採起實時同步的方式

 

 

Rsync的工做方式介紹與實踐

01      本地方式

02      經過遠程shell方式

03      經過rsync daemon方式

 

rsync三種工做方式(使用方法)

    # 1 本地備份數據方式(相似cp功能)

Local:  rsync [OPTION...] SRC... [DEST]

rsync        ---備份數據命令

[OPTION...]  ---命令參數信息

src          ---要備份的數據信息,源信息

[DEST]       ---將備份的數據保存到哪,目標信息(目錄)

舉例:rsync   /etc/hosts      /opt/

 

# 2  遠程備份數據方式(相似scp功能)

 

先理解推和拉的關係    懟就是     恏就是

 

 

 

 

 

    Access via remote shell:

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

  rsync        ---備份數據命令

  [OPTION...]  ---命令參數信息

  [USER@]      ---以什麼身份遠程登錄到主機上,以當前用戶身份進行登錄

                  要確保遠程主機上有相應用戶信息

  HOST         ---遠程主機IP地址或者主機名稱信息

  :SRC         ---要備份的數據信息,源信息

      [DEST]       ---將備份的數據保存到本地相應目錄中,目標信息(目錄)

  推:   rsync  -rp /etc/hosts root@172.16.1.31:/opt  此處root表示進來的身份

@前定義傳輸數據的身份   傳輸數據的身份信息

 

 

 

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

  rsync        ---備份數據命令

  [OPTION...]  ---命令參數信息

  :SRC         ---要備份的數據信息,源信息(本地數據信息)

  [USER@]      ---以什麼身份遠程登錄到主機上,以當前用戶身份進行登錄

                  要確保遠程主機上有相應用戶信息

  HOST         ---遠程主機IP地址或者主機名稱信息

  :SRC         ---要備份的數據信息,源信息

      [DEST]       ---將備份的數據保存到遠程主機相應目錄中,目標信息(目錄)

  拉:    rsync -rp root@172.16.1.31:/opt/hosts     /etc/hosts    拉到本地而且更名

 

 

 

對於目錄的操做:

 

rsync -rp /etc/sysconfig      172.16.1.31:/opt

若是sysconfig後帶/  表示是將目錄下的內容推送過去

若是不帶/     是將目錄自己和目錄下的內容推送過去     注意2者的區別

 

 

 

#3 守護進程方式備份數據

守護進程:能夠在後臺看到進程  而且建立了socket

 

    Access via rsync daemon:

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

        rsync        ---備份數據命令

        [OPTION...]  ---命令參數信息

        [USER@]      ---認證用戶信息

HOST         ---遠程主機IP地址或者主機名稱信息

        ::SRC        ---要備份的模塊信息

[DEST]       ---將備份的數據保存到本地相應目錄中,目標信息(目錄

 

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

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

        rsync        ---備份數據命令

        [OPTION...]  ---命令參數信息

        [USER@]      ---認證用戶信息

HOST         ---遠程主機IP地址或者主機名稱信息

        SRC          ---要備份的數據目錄或者文件信息

[DEST]       ---備份的模塊信息

 

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

 

 

 

守護進程部署方式分爲2部分

1     服務端的部署     ---rsync

2     客戶端的部署     ---web服務    採用推的方式

rsync服務器做爲服務端

其餘服務器做爲客戶端

 

 

 

 

 

 

 

 

 

 

 

 

服務端:

1  第一個里程碑:查看有沒有這個軟件

    rpm -qa rsync

2 第二個里程碑:安裝rsync軟件

yum install -y rsync

3 第三個里程碑:編寫配置文件(編寫好配置文件,後續操做步驟能夠按照配置文件進行):

默認沒有   須要手工建立

配置文件詳解:

 

 

#第三個里程碑

 配置文件:

#rsync_config
#created by Nod at 2018
##rsyncd.conf start##

uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
exclude=a b d/3.txt
[backup]
comment = "backup dir by oldboy"
path = /backup
[backupdev]
comment = "backup dir by oldboy"
path = /backupdev
[backupdba]
comment = "backup dir by oldboy"
path = /backupdba
[backupsa]
comment = "backup dir by oldboy"
path = /backupsa
View Code

 

[root@backup ~]# vim /etc/rsyncd.conf

#rsync_config

#created by HQ at 2017

##rsyncd.conf start##

 

uid = rsync

gid = rsync

use chroot = no

max connections = 200

timeout = 300

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

ignore errors

read only = false

list = false

hosts allow = 172.16.1.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

[backup]

comment = "backup dir by oldboy"

path = /backup

~                                                                                                                  

~                                                                                                                   

~                                                                                                                  

"/etc/rsyncd.conf" [New] 22L, 445C written  

 

# 4  第四個里程碑   建立備份目錄的管理用戶   此處爲虛擬用戶

                                                    

[root@backup ~]# useradd -s /sbin/nologin -M rsync

[root@backup ~]# id rsync

uid=502(rsync) gid=502(rsync) groups=502(rsync)

 

# 5   第五個里程碑:建立安全認證文件  

[root@backup ~]# echo "rsync_backup:oldboy123">>/etc/rsync.password

[root@backup ~]# cat /etc/rsync.password

rsync_backup:oldboy123

#5.1   修改權限

[root@backup ~]# chmod 600 /etc/rsync.password

 

#6    第六個里程碑:建立備份目錄

至此服務端配置操做完成

[root@backup ~]# mkdir -p /backup

[root@backup ~]# chown -R rsync.rsync /backup/

[root@backup ~]# ll /backup/

total 4

-rw-r--r-- 1 rsync rsync 379 May  2 16:51 hosts

#7    第七個里程碑:啓動rsync服務

[root@backup ~]# rsync --daemon

[root@backup ~]# netstat -lntup | grep rsync

tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      2932/rsync         

tcp        0      0 :::873                      :::*                        LISTEN      2932/rsync          

[root@backup ~]# netstat -lutup | grep rsync
tcp 0 0 *:rsync *:* LISTEN 3593/rsync
tcp 0 0 *:rsync *:* LISTEN 3593/rsync
[root@backup ~]# ps -ef | grep rsync
root 3593 1 0 03:57 ? 00:00:00 rsync --daemon

客戶端:

#第一個里程碑:查看有無rsync這個軟件

#第二個里程碑:yum -y install rsync

#第三個里程碑:客戶端建立安全認證文件

[root@nfs01 ~]# echo "oldboy123">/etc/rsync.password

[root@nfs01 ~]# chmod 600 /etc/rsync.password

 

至此客戶端配置完畢

#進行數據推送的測試

 

   :nfs:  rsync -avz rsync_backup@172.16.1.41::backup/oldboy.txt /tmp/

   :nfs    rsync -avz /etc   rsync_backup@172.16.1.41::backup

 

 

1     須要進行交互的方式  就是須要輸入密碼

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup

Password:

sending incremental file list

hosts

 

sent 202 bytes  received 27 bytes  35.23 bytes/sec

total size is 379  speedup is 1.66

2    不須要輸入密碼      免交互

[root@nfs01 ~]# echo "oldboy123">/etc/rsync.password

[root@nfs01 ~]# chmod 600 /etc/rsync.password

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

sending incremental file list

hosts

 

sent 202 bytes  received 27 bytes  458.00 bytes/sec

total size is 379  speedup is 1.66

 

===========================================================================

 

Rsync的參數說明

 

 

 

 

 

 

 

 

 

 

 

 

小結:

服務端:

第一個歷程:檢查軟件是否安裝

rpm -qa rsync

yum install -y rsync

 

第二個歷程:編寫配置文件

vim /etc/rsyncd.conf   ---默認此文件是不存在的,須要建立出來

#rsync_config

#created by HQ at 2017

##rsyncd.conf start##

    

uid = rsync

gid = rsync

use chroot = no

max connections = 200

timeout = 300

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

ignore errors

read only = false

list = false

hosts allow = 172.16.1.0/24

 hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

[backup]

comment = "backup dir by oldboy"

path = /backup

 

第三個歷程:建立備份目錄管理用戶(虛擬用戶)

useradd -s /sbin/nologin -M rsync

 id rsync

 

第四個歷程:建立服務密碼文件,並修改權限爲600

echo "rsync_backup:oldboy123" >>/etc/rsync.password

chmod 600 /etc/rsync.password

 

第五個歷程:建立備份目錄

mkdir /backup

 

第六個歷程:啓動rsync守護進程服務

rsync --daemon

    netstat -lntup|grep rsync

 

 

 

rsync的三種工做方式:使用方法

 

 

# 遠程備份數據方式(相似scp功能)

    Access via remote shell:

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

  rsync        ---備份數據命令

  [OPTION...]  ---命令參數信息

  [USER@]      ---以什麼身份遠程登錄到主機上,以當前用戶身份進行登錄

                  要確保遠程主機上有相應用戶信息

  HOST         ---遠程主機IP地址或者主機名稱信息

  :SRC         ---要備份的數據信息,源信息

      [DEST]       ---將備份的數據保存到本地相應目錄中,目標信息(目錄)

 

 

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

  rsync        ---備份數據命令

  [OPTION...]  ---命令參數信息

  :SRC         ---要備份的數據信息,源信息(本地數據信息)

  [USER@]      ---以什麼身份遠程登錄到主機上,以當前用戶身份進行登錄

                  要確保遠程主機上有相應用戶信息

  HOST         ---遠程主機IP地址或者主機名稱信息

  :SRC         ---要備份的數據信息,源信息

      [DEST]       ---將備份的數據保存到遠程主機相應目錄中,目標信息(目錄)

 

 

===================================================add begin 0504==============================================

 

殺進程方式:

   殺進程方式(三種)

    第一個殺手:kill

       kill 進程號pid          

            [root@backup etc]# kill 2347

       [root@backup etc]# kill 2347

       -bash: kill: (2347) - No such process

            說明:kill殺進程會有提示信息。

  

     第二個殺手:killall(優選)

             killall 進程名

            [root@backup etc]# killall rsync

       [root@backup etc]# killall rsync

       rsync: no process killed

            說明:killall殺進程會有提示信息。

  

   第三個殺手:pkill(模糊殺手)殺人範圍太廣(慎用)

             pkill 進程名

             說明:pkill殺進程不會有提示信息。

 

 

 

 

02. rsync命令參數說明

    rsync -avz -e "ssh -p22" /etc/hosts 172.16.1.41:/tmp/   --- -e實現數據加密傳輸

 

無差別同步:(同步數據雙方,數據信息高度一致)

我有一個蘋果手機,也給你買一個,你也有

個人蘋果手機壞了,你的手機也要砸了

03. rsync守護進程模式企業應用實踐

    1. 守護進程模式架構部署方式

   1)將服務端部署在備份服務器上  客戶端部署在架構中其餘服務器上 將數據推送到服務端(優選)

   2)將服務端部署在架構中其餘服務器上,客戶端部署在備份服務器上 將數據從服務端拉取

 

 

 

 

生成多個配置文件的模塊

19,21copy21

19,21move11

 

2. rsync服務端多模塊配置實踐

       第一個歷程:編寫rsync服務端配置文件 添加多模塊

            [backup]

       comment = "backup dir by oldboy"

       path = /backup

       [backupdba]

       comment = "backup dir by oldboy"

       path = /backupdba

       [backupdev]

       comment = "backup dir by oldboy"

       path = /backupdev

 

 

 

 

    第二個歷程:rsync服務端建立備份目錄

服務端:

命令:

mkdir /{backupdev,backupdba,backupsa}

           chown -R rsync.rsync /{backupdev,backupdba,backupsa}

           ll -d /{backupdev,backupdba,backupsa}

 

[root@backup ~]# mkdir /backupdba

[root@backup ~]# mkdir /backupsa

[root@backup ~]# mkdir /backupdev

[root@backup ~]# chown -R rsync.rsync /backupdba

[root@backup ~]# chown -R rsync.rsync /backupsa

[root@backup ~]# chown -R rsync.rsync /backupdev

    第三個歷程:重啓rsync服務

                       分步式:

  killall rsync       殺掉進程

             rsync --daemon     重啓服務

   一鍵式:

             killall rsync;sleep 3;rsync --daemon   --- 服務重啓腳本中的命令

 

 

[root@backup ~]# killall rsync;sleep 2; rsync --daemon

 

 

              第四個歷程:進行測試

 

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupdba --password-file=/etc/rsync.password

sending incremental file list

hosts

 

sent 202 bytes  received 27 bytes  458.00 bytes/sec

total size is 379  speedup is 1.66

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupsa --password-file=/etc/rsync.password

sending incremental file list

hosts

 

sent 202 bytes  received 27 bytes  458.00 bytes/sec

total size is 379  speedup is 1.66

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupdev --password-file=/etc/rsync.password

sending incremental file list

hosts

 

sent 202 bytes  received 27 bytes  458.00 bytes/sec

total size is 379  speedup is 1.66

 

注意:此處是copy到一個目錄下的子目錄;注意要逐層建立,若是backupdev/1/2   必需要創建在backupdev/1/有的前提下

[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupdev/1/ --password-file=/etc/rsync.password

sending incremental file list

created directory 1

hosts

 

sent 202 bytes  received 27 bytes  152.67 bytes/sec

total size is 379  speedup is 1.66

 

 

 

[root@backup ~]# ls /backup*

/backup:

history

 

/backupdba:

hosts

 

/backupdev:

1  hosts

 

/backupsa:

hosts

 

 

 

3. rsync服務端自動建立目錄信息

   [root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backupdev/1/ --password-file=/etc/rsync.password

       sending incremental file list

       created directory 1

       hosts

      

       sent 200 bytes  received 27 bytes  454.00 bytes/sec

       total size is 379  speedup is 1.67

   強調:不能建立多級目錄;

注意:此處是copy到一個目錄下的子目錄;注意要逐層建立,若是backupdev/1/2   必需要創建在backupdev/1/有的前提下

 

4. rsync守護進程模式實現數據排除功能

 

客戶端排除方式    --exclude

 

環境建立在nfs上   :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

建立好測試環境:

[root@nfs01 ~]# mkdir /oldboy_dir/{a..d}

[root@nfs01 ~]# touch /oldboy_dir/a/{1..3}.txt

[root@nfs01 ~]# touch /oldboy_dir/b/{1..3}.txt

[root@nfs01 ~]# touch /oldboy_dir/c/{1..3}.txt

[root@nfs01 ~]# touch /oldboy_dir/d/{1..3}.txt

[root@nfs01 ~]# tree /oldboy_dir/

/oldboy_dir/

├── a

│   ├── 1.txt

│   ├── 2.txt

│   └── 3.txt

├── b

│   ├── 1.txt

│   ├── 2.txt

│   └── 3.txt

├── c

│   ├── 1.txt

│   ├── 2.txt

│   └── 3.txt

└── d

    ├── 1.txt

    ├── 2.txt

    └── 3.txt

  

# 排除a b目錄不須要同步備份,d目錄中3.txt文件不須要同步

--exclude=a

表示的是排除a文件夾

--exclude=b

表示的是排除b文件夾

--exclude=d/3.txt

表示的是排除d文件夾下的3.txt文件

 

 

 

客戶端

 

[root@nfs01 ~]# rsync -avz /oldboy_dir --exclude=a --exclude=b --exclude=d/3.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

sending incremental file list

oldboy_dir/

oldboy_dir/c/

oldboy_dir/c/1.txt

oldboy_dir/c/2.txt

oldboy_dir/c/3.txt

oldboy_dir/d/

oldboy_dir/d/1.txt

oldboy_dir/d/2.txt

 

sent 330 bytes  received 115 bytes  890.00 bytes/sec

total size is 0  speedup is 0.00

此處是簡潔的寫法。將a &b文件夾一塊兒包含

rsync -avz /oldboy_dir --exclude={a,b} --exclude=d/3.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password  

  

 

 

--exclude-from

根據指定的文件內的內容進行過濾

生成1個文件

 cat exclude.txt

a       表示a文件夾不上傳

b       表示b文件夾不上傳

d/3.txt

exclude.txt

  

   [root@nfs01 oldboy_dir]# rsync -avz /oldboy_dir --exclude-from=/oldboy_dir/exclude.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

sending incremental file list

oldboy_dir/

oldboy_dir/c/

oldboy_dir/c/1.txt

oldboy_dir/c/2.txt

oldboy_dir/c/3.txt

oldboy_dir/d/

oldboy_dir/d/1.txt

oldboy_dir/d/2.txt

 

sent 330 bytes  received 115 bytes  890.00 bytes/sec

total size is 0  speedup is 0.00

 

總結說明:

利用exclude指定排除信息時,須要寫上排除信息的相對路徑

利用exclude-from指定排除文件時,能夠寫絕對路由也能夠寫相對路徑

  

服務端排除方式

   exclude = a b d/3.txt   --- 編寫配置文件排除信息,並進行重啓

 [root@nfs01 ~]# rsync -avz /oldboy_dir/ --exclude={a,b} --exclude=d/3.txt rsync_backup@172.16.1.41::backupdba --password-file=/etc/rsync.password

sending incremental file list

./

c/

c/1.txt

c/2.txt

c/3.txt

d/

d/1.txt

d/2.txt

 

sent 308 bytes  received 114 bytes  844.00 bytes/sec

total size is 0  speedup is 0.00

[root@nfs01 ~]# cd /oldboy_dir/

[root@nfs01 oldboy_dir]# vim exclude.txt

a

b

d/3.txt

~                                                                                                                  

                                                                                                               

"exclude.txt" [New] 3L, 12C written                                                              

[root@nfs01 oldboy_dir]# cd

[root@nfs01 ~]# rsync -avz /oldboy_dir/ --exclude-from=/oldboy_dir/exclude.txt rsync_backup@172.16.1.41::backupsa --password-file=/etc/rsync.password

sending incremental file list

./

exclude.txt

c/

c/1.txt

c/2.txt

c/3.txt

d/

d/1.txt

d/2.txt

 

sent 384 bytes  received 133 bytes  1034.00 bytes/sec

total size is 12  speedup is 0.02

[root@nfs01 ~]# rsync -avz /oldboy_dir/  rsync_backup@172.16.1.41::backupsa --password-file=/etc/rsync.password

sending incremental file list

skipping daemon-excluded directory "a"

*** Skipping any contents from this failed directory ***

skipping daemon-excluded directory "b"

*** Skipping any contents from this failed directory ***

skipping daemon-excluded file "d/3.txt"

 

sent 258 bytes  received 12 bytes  540.00 bytes/sec

total size is 12  speedup is 0.04

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

[root@nfs01 ~]#

 

 

守護進程來建立備份目錄

 

backup:    mkdir {sa,dev,dba} -p

 

rsync -avz /oldboy/ rsync_backup@172,16.1.41::backup/dev --password-file=/etc/rsync.password

存在的問題:backup下能夠有/dev  可是不能建立多級目錄  沒法實現

 

會刪除根的命令  rsync -avz --delete rsync_backup@172.16.1.41::backup / --password-file=/etc/rsync.password

 

 

 

 

 

 

 

建議黑名單在配置文件中只配置一種名單策略便可;

 

局部配置優於全局配置

 

 

 

 

5. rsync守護進程實現無差別同步

   我有的,你也有

   我沒有的,你也不能有

   rsync -avz --delete /oldboy_dir rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

       總結:實現數據統一一致

使用無差別同步時要當心謹慎

 

企業面試題:

有1個目錄,存儲空間佔用了1個T,請將這個目錄下面的內容快速清空

rysnc  -avz --delete /null/ 172.16.1.41:/data_1T/

有1個目錄,存儲空間佔用了1個T,請將這個文件裏面的內容快速清空

rysnc  -avz --delete /null/null.txt 172.16.1.41:/data_1T/file_1T.txt

 

6. rsync守護進程實現同步數據訪問控制

在配置文件當中實現   rsync.conf

   hosts allow = 172.16.1.0/24    --- 白名單

       hosts deny = 0.0.0.0/32        --- 黑名單

說明白名單和黑名單同時存在時,權限爲大者優先使用

誰放行的大的 誰優先

白名單和黑名單建議選擇其一使用   不要2個都選

   參見圖示理解訪問控制策略原理

   建議:在配置文件中只配置一種名單策略便可

  

   # backupdev---172.16.1.0/24 backupdba---10.0.0.0/24

       # 全局配置 局部配置

       # 全局配置:全部配置信息影響全部模塊

       # 局部配置:隻影響指定模塊,其餘模塊不會受到影響

   局部配置信息優於全局配置,當全局配置和局部配置相同時,遵循局部配置

  

       [backupdba]

       comment = "backup dir by oldboy"

       path = /backupdba

       hosts allow = 10.0.0.0/24

       [backupdev]

       comment = "backup dir by oldboy"

       path = /backupdev

       hosts allow = 172.16.1.0/24

  

7. rsync守護進程模式列表功能

在配置文件中

       list = true    --- 表示將服務端模塊信息列表顯示在客戶端

       建議:改成false更加安全          

  

8. rsync服務擴展啓動方式

   xinetd服務:超級守護進程服務,能夠管理多個守護進程(rsync telnet tftp)

   第一個歷程:下載超級守護進程軟件

   yum install -y xinetd

  

   第二個歷程:編寫xinetd相關配置文件

       cd /etc/xinetd.d/

       vim rsync

   disable = no   --- 願意讓xinetd服務管理

  

   第三個歷程:重啓xined服務(但須要前蹄把rsync服務中止掉)

   /etc/init.d/xinetd start|stop|restart

   說明:只做爲了解,不建議使用xinetd服務啓動rsync

  

 

rsync   是備份服務

 

 

 

 

 

 

下篇

 

 

 

相關文章
相關標籤/搜索