rsync /etc/fstab /opt
rsync -rl /etc/fstab /boot/grub /opthtml
經常使用命令格式及備份選項: -v, --verbose 詳細模式輸出 -q, --quiet 精簡輸出模式 -c, --checksum 打開校驗開關,強制對文件傳輸進行校驗 -a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,等於-rlptgoD -r, --recursive 對子目錄以遞歸模式處理 -p, --perms 保持文件權限 -o, --owner 保持文件屬主信息 -g, --group 保持文件屬組信息 -z, --compress 對備份的文件在傳輸時進行壓縮處理 -delete 刪除那些DST中SRC沒有的文件,保證兩邊文件同步對齊
rsync同步資源的表示方式爲 「用戶名@主機地址::共享模塊名」 或者,「rsync://用戶名@主機地址/共享模塊名」 前者爲兩個冒號分割形式,後者爲URL地址形式,例如 執行如下操做將訪問rsync同步源,並下載到本地/root目錄下進行備份 [root@localhost~]# rsync -avz backuper@192.168.144.110::abc /root 或者 [root@localhost~]# rsync -avz rsync://backuper@192.168.144.110/abc /root 執行如下操做訪問源服務器中的abc共享模塊,並下載到本地的/opt目錄下: [root@localhost~]# rsync -avzH --delete backuper@192.168.144.110::abc /opt 實際生產環境中一般都是計劃性重複執行的,爲了在週期性計劃任務中不用輸入密碼交互式執行, 須要建立一個密碼文件,保存用戶的密碼,如/etc/server.pass,在執行rsync同步時使用選項 --password-file=/etc/server.pass,指定便可。 crontab -e 30 22 * * * /usr/bin/rsync --delete --password-file=/etc/server.pass backuperA@192.168.144.110::abc /opt //天天22:30執行腳本 servevice crond restart chkconfig crond on
notify是一種強大的、細粒度的、異步的文件系統事件監控機制,Linux內核從2.6.13版本起,加入了對inotify的支持。經過inotify能夠監控文件系統中添加、刪除、修改、移動等各類事件,利用這個內核接口,inotify-tools即可以監控文件系統下文件的各類變化狀況了。linux
uname -r 算法
主機 | 操做系統 | IP地址 | 所需軟件 |
---|---|---|---|
rsync源服務器 | CentOS 7.0 x86_64 | 192.168.144.110 | rsync+inotify-tools-3.14.tar.gz |
rsync備份服務器 | CentOS 7.0 x86_64 | 192.168.144.120 | rsync+inotify-tools-3.14.tar.gz |
rpm -q rsync //查詢rsync是否安裝,通常爲系統自帶安裝
yum install rsync -y //若沒有安裝,使用yum安裝vim
tar zxzvf notify-tools-3.14.tar.gz -C /opt
cd /opt/inotify-tools-3.14
./configuer
make && make install bash
vim /etc/sysctl.conf服務器
fs.inotify.max_queued_events = 16384 //監控事件隊列數 fs.inotify.max_user_instances = 1024 //最多監控實例數 fs.inotify.max_user_watches = 1048576 //實例最多監控文件數
vim /etc/rsyncd.conf異步
# /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: uid = nobody //rsync服務uid gid = nobody //rsync服務gid use chroot = yes //禁錮家目錄 pid file = /var/run/rsyncd.pid //進程文件目錄 address = 192.168.144.110 //源服務器監聽地址 port = 873 //服務端口號 log file = /var/log/rsyncd.log //指定日誌文件位置 hosts allow = * //容許任意網段服務器可與之同步 # max connections = 4 //最大連接數 # # exclude = lost+found/ # # transfer logging = yes # # timeout = 900 # # ignore nonreadable = yes # # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # # # [ftp] # # path = /home/ftp # # comment = ftp export area # # [abc] //共享模塊名稱,兩臺服務器能夠不一樣 path = /var/www/html //共享模塊路徑,兩臺服務器能夠不一樣 comment = www.yun.com //模塊描述,兩臺服務器能夠不一樣 read only = no //關閉只讀權限,不寫或者註釋爲默認選擇只讀 write only = no //關閉可寫權限,不寫或者註釋爲默認選擇不可寫 uid = root //指定模塊uid gid = root //指定模塊gid hosts allow = * //容許任意網段服務器訪問此模塊 auth users=test //模塊訪問驗證用戶名稱 secrets file = /etc/rsyncd_users.db //模塊驗證密碼文件,鍵值對形式 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //同步過程當中遇到此類文件不進行壓縮
此處須要注意,上述配置文件中,備份服務器的配置須要和源服務器如出一轍,除了備份服務器的不然在源服務器上行文件時會報錯。尤爲是密碼文件權限和獨立密碼文件權限須要爲600,不然也會報錯。ide
rsync --daemon 工具
vim /etc/rsyncd_users.db測試
test:abc123 //"用戶名:密碼"的形式
chmod 600 /etc/rsyncd_users.db
vim /etc/server.pass
abc123 //只含密碼的文件
chmod 600 /etc/server.pass
vim /opt/ino.sh
#!/bin/bash DESIP=192.168.144.120 //設置源服務器須要將文件上行(發送)到備份服務器IP地址 INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/" RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ test@$DESIP::abc/" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -gt 0 ] ; then $RSYNC_CMD fi done
chmod +x /opt/ino.sh