使用rsync備份數據


(1).實驗環境與目標

  源主機:youxi1  192.168.5.101

  目標主機:youxi2  192.168.5.102

  目標:將源主機youxi1的數據備份到youxi2上。

  rsync是C/S模式,默認端口873

(2).rsync命令常用格式與常用選項、

常用格式:

  rsync [OPTION] SRC [USER@]HOST:DEST  //源主機執行的推送數據命令,需要目的主機執行守護進程

  rsync [OPTION] SRC [USER@]HOST::DEST  //與上一條命令類似,但使用的是非系統用戶,並且需要配置文件

  rsync [OPTION] [USER@]HOST:SRC [DEST]  //目的主機執行的拉取數據命令,需要源主機執行守護進程

  rsync [OPTION] [USER@]HOST::SRC [DEST]  //與上一條命令類似,但使用的是非系統用戶,並且需要配置文件

常用選項:

-a,--archive 存檔模式,相當於-rlptgoD
-z,--compress 傳輸過程中壓縮數據
-v,--verbose 復雜輸出信息
--delete 刪除目標中存在,而源中不存在的文件
--password-file=FILE 從FILE中讀取密碼

  注意:-z選項適合雜碎文件的傳輸,如果是單個大文件傳輸並不適合使用此選項

(3).實驗

1)檢查是否安裝了rsync和xinetd

[root@youxi2 ~]# yum list installed | grep xinetd
xinetd.x86_64                         2:2.3.15-13.el7                  @base    
[root@youxi2 ~]# yum list installed | grep rsync
rsync.x86_64                          3.1.2-6.el7_6.1                  @updates

  如果以上命令沒有輸出結果,那么請使用yum -y install xinetd rsync安裝兩個程序,並systemctl enable [服務名]設置為開機自啟。

2)兩台主機上創建同名用戶,密碼可以不一樣

   在主機youxi1上添加rsync1用戶,密碼為101101

[root@youxi1 ~]# useradd rsync1
[root@youxi1 ~]# echo "101101" | passwd --stdin rsync1
更改用戶 rsync1 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。

  在主機youxi2上添加rsync1用戶,密碼為102102

[root@youxi2 ~]# useradd rsync1
[root@youxi2 ~]# echo "rsync1:102102" | chpasswd

3)在主機youxi1上創建源文件夾,並給rsync1添加權限

[root@youxi1 ~]# mkdir -p /www/html
[root@youxi1 ~]# setfacl -m u:rsync1:rwx /www/html  //目錄設置ACL權限,如果存在文件或目錄,可以使用-R選項遍歷賦權
[root@youxi1 ~]# setfacl -m d:u:rsync1:rwx /www/html  //目錄設置默認ACL權限,新建的文件或目錄將繼承默認ACL權限
[root@youxi1 ~]# getfacl /www/html                
getfacl: Removing leading '/' from absolute path names
# file: www/html
# owner: root
# group: root
user::rwx
user:rsync1:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:rsync1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

  拷貝一些數據作為測試

[root@youxi1 ~]# cp -r /var/* /www/html/
[root@youxi1 ~]# ls /www/html/
adm    crash  empty  gopher    lib    lock  mail  opt       run    tmp
cache  db     games  kerberos  local  log   nis   preserve  spool  yp

4)在主機youxi2上創建目的文件夾

[root@youxi2 ~]# mkdir -p /backup/www/html
[root@youxi2 ~]# chown rsync1:rsync1 /backup/www/html/
[root@youxi2 ~]# ls -ld /backup/www/html/
drwxr-xr-x 2 rsync1 rsync1 6 5月  15 11:16 /backup/www/html/

5)從主機youxi1上將數據推送到主機youxi2上

  推送數據,命令會在源主機youxi1上執行,那么相應的需要目的主機youxi2監聽。

  目的主機youxi2執行監聽(守護進程)

[root@youxi2 ~]# rsync --daemon
[root@youxi2 ~]# netstat -antup | grep 873       
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1824/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      1824/rsync 

  源主機youxi1執行推送命令

[root@youxi1 ~]# rsync -avz /www/html/ rsync1@192.168.5.102:/backup/www/html/
rsync1@192.168.5.102's password:

  最后到目的主機youxi2上查看是否成功

[root@youxi2 ~]# ls /backup/www/html/
adm    crash  empty  gopher    lib    lock  mail  opt       run    tmp
cache  db     games  kerberos  local  log   nis   preserve  spool  yp

6)當然也可以在主機youxi2上拉取youxi1上的數據

  拉取數據,命令會在目的主機youxi2上執行,那么相應的需要源主機youxi1監聽

  源主機youxi1執行監聽(守護進程)

[root@youxi1 ~]# rsync --daemon
[root@youxi1 ~]# netstat -antup | grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1947/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      1947/rsync    

  目的主機youxi2執行拉取命令

[root@youxi2 ~]# rsync -avz rsync1@192.168.5.101:/www/html/ /backup/www/html/
rsync1@192.168.5.101's password:

  最后查看目的主機youxi2上是否成功

[root@youxi2 ~]# ls /backup/www/html/
adm    crash  empty  gopher    lib    lock  mail  opt       run    tmp
cache  db     games  kerberos  local  log   nis   preserve  spool  yp

(4).使用非系統用戶備份數據

1)配置文件說明

  rsync的配置文件是/etc/rsyncd.conf,在執行rsync守護進程時調用。配置文件內分為全局參數和模塊參數。

  常見全局參數:

port 指定端口號,默認873。
uid 指定傳輸文件時守護進程應該具有的uid,默認為nobody。配合gid可以確定訪問權限。
gid 指定傳輸文件時守護進程應該具有的gid,默認為nobody。
max connections 指定最大連接數,默認為0,也就是沒有限制。
lock file 指定支持max connections參數的鎖文件,默認為/var/run/rsyncd.lock。
motd file 指定提示文件,連接時顯示文件內容給連接者,默認沒有。
log file 指定rsync的日志文件,而不將日志發送給syslog。
pid file 指定rsync的pid文件,一般指定為/var/run/rsyncd.pid,存放進程ID的文件位置。
hosts allow 指定允許同步的客戶機地址,可以是IP地址也可以是網段

  常見模塊參數:

comment 對模塊的描述,默認沒有。
path 指定提供給模塊的目錄,必須指定。
read only 如果值是yes表示只允許下載,no既可以加載也可以上傳
exclude 指定多個由空格隔開的文件或目錄,不上傳或下載(即不可訪問),相當於命令中的--exclude=PATTERN或-f,--filter=RULE。
exclude from從指定文件中讀取exclude文件或目錄列表,換行符分隔。
include 指定不排除符合要求的文件或目錄,相當於命令中的--include=PATTERN。
include from從指定文件讀取include文件或目錄列表,換行符分隔。
auth users 指定允許連接該模塊的用戶名列表,用空格或逗號分隔,與系統用戶無關。用戶名和密碼以明文方式存在在secrets file參數的文件中。
secrets file 指定包含“username:password”對的文件,換行符分隔,只有auth users參數被指定,才生效。
hosts allow 指定允許同步的客戶機地址,可以是IP地址也可以是網段
list 設定當請求使用模塊列表時,該模塊是否被列出。false隱藏,默認值為true顯示
timeout 超時時間,默認為0,沒有超時時間。理想數值600。

2)使用非系統用戶從源主機youxi1上將數據推送到目標主機youxi2上

  在目標主機youxi2上配置rsync.conf

[root@youxi2 ~]# cat /etc/rsyncd.conf 
uid = root  //運行進程的用戶
gid = root  //運行進程的組
address = 192.168.5.102  //監聽地址
port = 873  //監聽端口號
hosts allow = 192.168.5.101/24  //允許同步的IP地址
use chroot = yes  //是否鎖定家目錄,rsync被黑后,黑客無法在rsync運行的家目錄之外創建文件。
max connections = 5  //最大連接數
pid file = /var/run/rsyncd.pid  //進程ID存放文件,自動生成
lock file = /var/run/rsync.lock  //max connections參數的鎖文件
log file = /var/log/rsyncd.log  //日志文件位置
motd file = /etc/rsyncd.motd  //提示信息存放文件位置
[backupwwwhtml]  //模塊名
path = /backup/www/html  //模塊運行路徑
comment = backup /www/html/  //描述
read only = false  //上傳下載權限
list = yes  //允許查看模塊信息
auth users = rsync2  //非系統用戶名
secrets file = /etc/rsync.passwd  //存放密碼文件

  在目標主機youxi2上創建密碼文件,並限制權限

[root@youxi2 ~]# cat /etc/rsync.passwd 
rsync2:102102
[root@youxi2 ~]# chmod 600 /etc/rsync.passwd

  啟動rsync的守護進程,並指定使用/etc/rsyncd.conf配置文件

[root@youxi2 ~]# rsync --daemon --config=/etc/rsyncd.conf
[root@youxi2 ~]# netstat -antup | grep rsync
tcp        0      0 192.168.5.102:873       0.0.0.0:*               LISTEN      1384/rsync   

  在目標主機youxi2上添加端口號

[root@youxi2 sysconfig]# firewall-cmd --permanent --zone=public --add-port=873/tcp
success
[root@youxi2 sysconfig]# firewall-cmd reload
success

  最后在源主機youxi1上執行推送命令

[root@youxi1 ~]# rsync -avz /www/html/ rsync2@192.168.5.102::backupwwwhtml

Password:

3)使用非系統用戶在目標主機youxi2上拉取源主機youxi1的數據

  在源主機youxi1上配置rsync.conf

[root@youxi1 ~]# cat /etc/rsyncd.conf 
uid = root
gid = root
address = 192.168.5.101
port = 873
hosts allow = 192.168.5.102/24
use chroot = yes
max connections = 5
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
motd file = /etc/rsyncd.motd
[backup]
path = /www/html
comment = backup /www/html
read only = no
list = yes
auth users = rsync3
secrets file = /etc/rsync.passwd

  在源主機youxi1上創建密碼文件,並限制權限

[root@youxi1 ~]# cat /etc/rsync.passwd 
rsync3:101101
[root@youxi1 ~]# chmod 600 /etc/rsync.passwd

  啟動rsync的守護進程,並讀取配置文件/etc/rsyncd.conf

[root@youxi1 ~]# rsync --daemon --config=/etc/rsyncd.conf
[root@youxi1 ~]# netstat -antup | grep rsync
tcp        0      0 192.168.5.101:873       0.0.0.0:*               LISTEN      2188/rsync  

  在源主機youxi1上添加端口

[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=873/tcp
success
[root@youxi1 ~]# firewall-cmd --reload 
success

  在目標主機youxi2上執行拉取命令

[root@youxi2 ~]# rsync -avz rsync3@192.168.5.101::backup /backup/www/html/

Password:

  注意:如果不想每次備份數據都輸入一次命令,或需要進行定時計划任務,可以使用--password-file=FILE選項,將密碼保存到文件中使用選項調用。


免責聲明!

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



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