rsync備份
數據不能丟失(運維最重要的職責)
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模式,也稱作本地模式
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備份