1. 程式人生 > >rsync備份

rsync備份

基本 sts time ssh協議 fas 守護 sync 效率 data

運維人員基本職責
數據不能丟失(運維最重要的職責)
7*24小時提供服務,網站不宕機
提升用戶體驗

rsync備份服務介紹

Rsync是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具
rsync — a fast, versatile, remote (and local) file-copying tool
來自:http://www.samba.org/ftp/rsync/rsync.html
通過:man rsync
全量復制:是將所有備份數據都同步一遍
增量復制:只將變化的新增的數據,進行備份同步

rsync命令具有4種功能(1v4)

1、shell模式,也稱作本地模式

2、遠程shell模式,此時可以利用ssh協議承載其數據傳輸過程
3、列表模式,其工作方式與ls相似,僅列出源的內容:-nv
4、服務器模式,此時,rsync可以工作在守護進程,能夠接收客
戶端的數據請求;在使用時,可以在客戶端使用rsync命令把文件發送
到守護進程,也可以像服務器請求獲取文件

1.2.1 具有本地數據備份復制功能(類似於cp命令)
本地文件數據備份
[root@backup ~]# \cp /etc/hosts /tmp/
[root@backup ~]# ll /tmp/hosts
-rw-r--r-- 1 root root 371 Nov 28 09:05 /tmp/hosts

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

、 [root@backup ~]# ll /tmp/hosts
-rw-r--r-- 1 root root 371 Nov 28 09:07 /tmp/hosts

本地目錄數據備份
[root@backup ~]# mkdir /oldboy_dir/
[root@backup ~]# touch /oldboy_dir/{a..e}
[root@backup ~]# tree /oldboy_dir/
/oldboy_dir/
├── a
├── b
├── c
├── d
└── e

[root@backup ~]# cp -r /oldboy_dir/ /tmp/
[root@backup ~]# ll /tmp/oldboy_dir/ -d
drwxr-xr-x 2 root root 4096 Nov 28 09:10 /tmp/oldboy_dir/
[root@backup ~]# tree /tmp/oldboy_dir/
/tmp/oldboy_dir/
├── a
├── b
├── c
├── d
└── e

0 directories, 5 files

[root@backup ~]# rsync -r /oldboy_dir/ /tmp/
[root@backup ~]# ll /tmp/oldboy_dir/ -d
ls: cannot access /tmp/oldboy_dir/: No such file or directory
說明:備份目錄下面的數據內容備份過去了,但目錄本身沒有備份

[root@backup ~]# rsync -r /oldboy_dir /tmp/
[root@backup ~]# ll /tmp/oldboy_dir/ -d
drwxr-xr-x 2 root root 4096 Nov 28 09:13 /tmp/oldboy_dir/
[root@backup ~]# tree /tmp/oldboy_dir/
/tmp/oldboy_dir/
├── a
├── b
├── c
├── d
└── e

0 directories, 5 files

總結說明:利用rsync命令在備份數據目錄時
備份的數據目錄後面有    /  類似這樣形式/oldboy_dir/,表示只將oldboy_dir目錄下面的內容進行復制
備份的數據目錄後面沒有  /  類似這樣形式/oldboy_dir,  表示將oldboy_dir目錄下面的內容以及目錄本身進行復制

1.2.2 具有遠程數據備份復制功能(類似於scp命令)
[root@backup ~]# scp /etc/hosts 172.16.1.31:/tmp/
[email protected]‘s password:
hosts 100% 371 0.4KB/s 00:00

[root@backup ~]# scp -r /oldboy_dir/ 172.16.1.31:/tmp/
[email protected]‘s password: 
Permission denied, please try again.
[email protected]‘s password: 
c                            100%    0     0.0KB/s   00:00    
d                            100%    0     0.0KB/s   00:00    
e                            100%    0     0.0KB/s   00:00    
b                            100%    0     0.0KB/s   00:00    
a                            100%    0     0.0KB/s   00:00
說明:scp命令屬於全量復制

[root@backup ~]# rsync /etc/hosts 172.16.1.31:/tmp
[email protected]‘s password: 

[root@backup ~]# rsync -rv /oldboy_dir 172.16.1.31:/tmp/
[email protected]‘s password: 
sending incremental file list
oldboy_dir/
oldboy_dir/a
oldboy_dir/b
oldboy_dir/c
oldboy_dir/d
oldboy_dir/e
說明:rsync命令屬於增量復制

1.2.3 數據刪除功能(類似於rm命令)
[root@backup tmp]# mkdir /null
[root@backup tmp]# rsync -rv --delete /null/ /tmp/oldboy_dir/
sending incremental file list
deleting e
deleting d
deleting c
deleting b
deleting a

sent 24 bytes  received 12 bytes  72.00 bytes/sec
total size is 0  speedup is 0.00
[root@backup tmp]# tree /tmp/oldboy_dir/
/tmp/oldboy_dir/

0 directories, 0 files
[root@backup tmp]# 
說明:rsync命令清空目錄內容或者清空文件內容效率比rm命令要高

1.2.4 可以進行數據信息查看(類似於ls命令)
[root@backup tmp]# rsync /etc/hosts
-rw-r--r-- 371 2017/11/27 12:15:46 hosts

rsync軟件實現增量復制原理

Rsync通過其獨特的“quick check”算法,它僅同步大小或者最後修改時間發生變化的文件或目錄,
當然也可根據權限,屬主等屬性的變化同步

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) 支持匿名的或認證(無需系統用戶)的進程模式傳輸,可實現方便安全的進行數據備份及鏡像。
1.5 rsync軟件工作原理

rsync軟件工作方式

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

Access via remote shell:
  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

Access via rsync daemon:
  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

1.6.1 本地數據備份功能(類似於cp)
Local: rsync [OPTION...] SRC... [DEST]
rsync ---數據備份命令
[OPTION...] ---命令相關參數
SRC... ---要進行本地備份的數據信息
[DEST] ---把數據備份到本地什麽位置

1.6.2 遠程數據備份功能
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

  拉過程語法解釋說明
  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
  rsync         ---數據備份命令
  [OPTION...]   ---命令相關參數     
  [USER@]       ---以什麽用戶身份進行數據信息拉取
  HOST:         ---遠程主機地址信息,或者可以寫為遠程主機名稱信息  
  SRC...        ---要進行遠程傳輸備份的遠程數據信息
  [DEST]        ---把遠程數據備份到本地什麽位置

  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
  rsync         ---數據備份命令
  [OPTION...]   ---命令相關參數     
  [USER@]       ---以什麽用戶身份進行數據信息推送
  HOST:         ---遠程主機地址信息,或者可以寫為遠程主機名稱信息  
  SRC...        ---要進行遠程傳輸備份的本地數據信息
  [DEST]        ---把本地數據備份到遠程什麽位置

1.6.3 守護進程方式進行數據備份傳輸(服務端和客戶端)
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

  Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
  rsync         ---數據備份命令
  [OPTION...]   ---命令相關參數   
  [USER@]       ---遠程連接認證用戶身份信息,認證用戶為一個虛擬用戶,不需要進行創建
  HOST::        ---遠程主機地址信息,或者可以寫為遠程主機名稱信息 
  SRC...        ---要進行遠程傳輸備份的遠程模塊信息
  [DEST]        ---把遠程數據備份到本地什麽位置

  Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
  rsync         ---數據備份命令
  [OPTION...]   ---命令相關參數   
  [USER@]       ---遠程連接認證用戶身份信息,認證用戶為一個虛擬用戶,不需要進行創建
  HOST::        ---遠程主機地址信息,或者可以寫為遠程主機名稱信息 
  SRC...        ---本地要進行遠程傳輸復制的文件或目錄信息
  DEST          ---要進行遠程傳輸備份的遠程模塊信息

rsync軟件在企業中做數據備份的方式

1) 定時同步+rsync進行數據備份:一般是網站內部人員存儲的數據信息,用定時同步
2) 實時同步+rsync進行數據備份:一般是網站外部人員存儲的數據信息,用實時同步
會有全網數據備份項目說明

rsync守護進程模式部署

1.8.1 rsync守護進程服務端部署
第一個裏程碑:檢查部署軟件服務是否存在
[root@backup /]# rpm -qa|grep rsync
rsync-3.0.6-12.el6.x86_64

第二個裏程碑:進行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

第三個裏程碑:創建rsync備份目錄管理用戶
[root@backup /]# useradd -s /sbin/nologin -M rsync
[root@backup /]# id rsync
uid=1000(rsync) gid=1001(rsync) groups=1001(rsync)

第四個裏程碑:創建rsync服務端備份數據目錄
[root@backup /]# mkdir /backup
[root@backup /]# chown -R rsync.rsync /backup/
[root@backup /]# ll -d /backup/
drwxr-xr-x 2 rsync rsync 4096 Nov 28 11:22 /backup/

第五個裏程碑:創建用戶認證文件
[root@backup /]# echo ‘rsync_backup:oldboy123‘ >/etc/rsync.passsword
[root@backup /]# chmod 600 /etc/rsync.passsword
[root@backup /]# cat /etc/rsync.passsword
rsync_backup:oldboy123
[root@backup /]# ll /etc/rsync.passsword
-rw------- 1 root root 23 Nov 28 11:24 /etc/rsync.passsword

第六個裏程碑:啟動rsync服務,啟動守護進程
[root@backup /]# rsync --daemon
[root@backup /]# ps -ef|grep rsync

root 4566 1 0 11:26 ? 00:00:00 rsync --daemon
root 4568 2809 0 11:27 pts/0 00:00:00 grep --color=auto rsync
[root@backup /]# netstat -lntup|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0: LISTEN 4566/rsync
tcp 0 0 :::873 :::
LISTEN 4566/rsync

1.8.2 rsync守護進程客戶端部署
客戶端測試過程:
rsync -av /etc/hosts [email protected]::backup

rsync命令選項

-n:測試,在不確定命令是否能按照意願執行時,務必要實現測試
-v:詳細輸出模式,--verbose
-q:--quiet,靜默模式
-c:--checksum,開啟校驗功能,強行對文件傳輸進行校驗
-r:--recursive,遞歸復制 表示增加文件的意思

rsync備份