實現rsync遠程同步效果展示

rsync遠程同步

技能目標

  • 學會配置rsync備份源
  • 學會使用rsync下行、上行異地備份
  • 學會使用rsync+inotify實時備份

rsync的作用

正確、有效的備份方案是保障系統及數據安全的重要手段,在服務器中,通常會結合計劃性任務、shell腳本來執行本地備份。
爲了進一步提高備份的可靠性使用異地備份也是非常必要的

實驗實例

實現rsync遠程同步效果展示

1:配置rsync源服務器

[root@localhost Packages] rpm -ivh rsync-3.0.9-18.el7.x86_64.rpm 
警告:rsync-3.0.9-18.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY
準備中...                          ################################# [100%]
    軟件包 rsync-3.0.9-18.el7.x86_64 已經安裝

2:建立/etc/rsyncd.conf配置文件

[root@localhost ~] vim /etc/rsyncd.conf                    
uid = nobody                      
gid = nobody
use chroot = yes                      #//禁錮在本地源
address = 192.168.32.207              #//監聽本地地址  
port 873                              #//監聽端口
log file = /var/log/rsyncd.log        #//日誌存放位置
pid file = /var/run/rsyncd.pid        #//存放進程ID的文件位置
host allow = 192.168.32.0/24          #//允許訪問的客戶機地址
[wwwroot]                             #//共享模塊名稱  
path = /var/www/html                  #//源目錄的實際路徑
comment = Document Root of www1.kgc.cn
read only = yes                       #//是否爲只讀
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #//同步時不再壓縮的文件類型
auth users = backuper                 #//授權賬戶
secrets file = /etc/rsyncd_users.db   #//存放賬戶信息的數據文件

基於安全性的考慮,對於rsync的同步源最好允許以只讀方式做同步。另外,同步可以採用匿名的方式,只要將其中的auth users 和 secrets file 配置紀錄去掉就可以了

3:爲備份賬戶創建數據文件

[root@localhost ~] vim /etc/rsyncd_users.db
backuper:abc123
[root@localhost ~] chmod 600 /etc/rsyncd_users.db 

備份用戶backuper需要對源目錄/var/www/html有相應的讀取權限,實際上只要other組有讀寫權限。則備份用戶backuper和運行用戶nobody也就有讀取權限

[root@localhost ~] mkdir -p /var/www/html
[root@localhost ~] ls -ld /var/www/html/
drwxr-xr-x. 2 root root 6 7月  31 09:36 /var/www/html/

4:啓動rsync服務程序,運行參數爲--daemon

完成上述操作後,執行rsync --daemon命令就可以啓動rsync服務,以獨立監聽的方式運行,若要關閉服務kill掉rsync的進程號(啓動前關閉防牆、setenforce 0)

[root@localhost ~] rsync --daemon
[root@localhost ~] netstat -ntap | grep rsync
tcp        0      0 192.168.32.207:873      0.0.0.0:*               LISTEN      8830/rsync    

4.1:使用rsync備份工具

有了同步源服務器之後,就可以使用rsync工具來執行遠程同步。

4.2:rsync命令的基本用法

絕大多數的備份程序要求指定原始位置和目標位置,rsync命令也一樣,最簡單的rsync用法類似於cp命令,例如:將/etc/fstab和目錄/boot/grub同步備份到/opt目錄下,其中“-r”選項表示遞歸整個目錄樹,”-l“選項用來備份鏈接文件

[root@localhost ~] rsync /etc/fstab /opt/
[root@localhost ~] cd /opt/
[root@localhost opt] ls
fstab  rh
[root@localhost opt] cat fstab 

#
# /etc/fstab
# Created by anaconda on Tue Jul 10 22:15:58 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ca0fed2f-3b05-41a3-85b2-ef00661afa16 /                       xfs     defaults        0 0
UUID=89c9c477-1d91-4581-b16d-240a37af2b2a /boot                   xfs     defaults        0 0
UUID=d7521d72-fa9e-4d30-81c9-004547187a10 /home                   xfs     defaults        0 0
UUID=a9dc5409-587d-48bb-91d1-cd1cfaea26d1 /opt                    xfs     defaults        0 0
UUID=db2690ca-e206-4c8d-8209-3064cd31bf49 swap                    swap    defaults        0 0
[root@localhost opt] rm -rf *
[root@localhost opt] ls
[root@localhost opt] rsync -rl /etc/fstab /var/log/ /opt/
[root@localhost opt] ls
amanda    dmesg               libvirt   sa                 vmware-vgauthsvc.log.0  Xorg.2.log
anaconda  dmesg.old           maillog   samba              vmware-vmsvc.log        Xorg.9.log
audit     firewalld           messages  secure             vmware-vmusr.log        yum.log
boot.log  fstab               ntpstats  speech-dispatcher  wpa_supplicant.log
btmp      gdm                 pluto     spooler            wtmp
chrony    glusterfs           ppp       sssd               Xorg.0.log
cron      grubby_prune_debug  qemu-ga   tallylog           Xorg.0.log.old
cups      lastlog             rhsm      tuned              Xorg.1.log

4.3:命令格式及常用備份選項

從以上操作可以看出,備份的基本格式爲”rsync [選項] 原始位置 目標位置“,其中常用的一些命令如下,根據實際需求做出選擇(如:-avz)

 -r:遞歸模式,包含目錄及子目錄中的所有文件。
 -l: 對於符號鏈接文件仍然複製爲符號鏈接文件。
 -V: 顯示同步過程的詳細(verbose) 信息。
 -a:歸檔模式,保留文件的權限、屬性等信息,等同於組合選項-rlptgoD.
 -z: 在傳輸文件時進行壓縮(compress)
 -p: 保留文件的權限標記。
 -t:保留文件的時間標記。
 -g:保留文件的屬組標記(僅超級用戶使用)。
 -0:  保留文件的屬主標記(僅超級用戶使用)。
 -H:保留硬連接文件。
 -A:保留ACL屬性信息。
 -D:保留設備文件及其他特殊文件。
 --delete:刪除目標位置有而原始位置沒有的文件。
- --ehecksum:根據校驗和(而不是文件大小、修改時間)來決定是否跳過 文件

5:配置源地表示方法

#”rsync -avz 用戶名@主機地址::共享模塊“ 
[root@localhost ~] rsync -azv [email protected]::wwwroot/root
Password:

sent 4 bytes  received 8 bytes  1.85 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518) [Receiver=3.0.9]

#”rsync -avz rsync://用戶名@主機地址/共享模塊名“
[root@localhost ~] rsync -azv rsync://[email protected]/wwwroot/root
Password: 

sent 4 bytes  received 8 bytes  1.85 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518) [Receiver=3.0.9]

6:rsync備份操作示例

執行以下操作將訪問源服務器中的wwwroot共享模塊,並下載到本地/myweb目錄下

[root@localhost ~]# mkdir /myweb
[root@localhost ~]# rsync -azvH --delete [email protected]::wwwroot /myweb
Password: 
receiving incremental file list
./
index.php

sent 83 bytes  received 161 bytes  44.36 bytes/sec
total size is 6  speedup is 0.02
[root@localhost ~]# ls /myweb/
index.php

7:實際生產環境中的備份工作通常是按計劃性任務重複執行的

例如:每天晚上22:30對服務器網站目錄進行一次同步,計劃性任務可以交給crond服務來完成
爲了避免計劃性任務的人機交互,可以在客戶端保存同步的用戶密碼,

[root@localhost ~] vim /opt/backuper.passwd
abc123
[root@localhost ~] chmod 600 /opt/backuper.passwd 
[root@localhost ~] crontab -e
crontab: installing new crontab

30 22 * * * /usr/bin/rsync -az --delete --password-file=/opt/backuper.passwd [email protected]::wwwr
oot /myweb  #//每天22:30執行任務
[root@localhost ~] service crond restart     #//重新啓動計劃性任務
Redirecting to /bin/systemctl restart crond.service
[root@localhost ~] chkconfig crond on    #//開啓開機自啓動
注意:正在將請求轉發到“systemctl enable crond.service”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章