rsync数据镜像同步工具

Posted on Posted in linux
Tips: 本文创建于2015年11月2日,已超过 2 年,内容或图片可能已经失效!

数据同步 rsync

1、shell模式,本地模式

  1. [root@localhost /]# rsync -av tongbu001 /tongbu002  
  2. sending incremental file list  
  3. tongbu001/  
  4. tongbu001/1  
  5. tongbu001/2  
  6. tongbu001/3  
  7. tongbu001/4  
  8. tongbu001/5  
  9. tongbu001/6  
  10.   
  11. sent 326 bytes  received 130 bytes  912.00 bytes/sec  
  12. total size is 0  speedup is 0.00  
  13.   
  14.   
  15. [root@localhost /]# ls tongbu002/  
  16. tongbu001  
  17.   
  18. #两种方法有差异,就差了一个 / ,差好多  
  19.   
  20. [root@localhost /]# rsync -av tongbu001/ tongbu002/  
  21. sending incremental file list  
  22. ./  
  23. 1  
  24. 2  
  25. 3  
  26. 4  
  27. 5  
  28. 6  
  29.   
  30. sent 303 bytes  received 129 bytes  864.00 bytes/sec  
  31. total size is 0  speedup is 0.00  
  32. [root@localhost /]# ls tongbu002/  
  33. 1  2  3  4  5  6  

2、远程shell模式

  1. [root@localhost /]# rsync -av tongbu001/ root@10.0.0.153:/tongbu001/  
  2. The authenticity of host '10.0.0.153 (10.0.0.153)' can't be established.  
  3. RSA key fingerprint is 4b:08:ea:0a:cc:93:11:05:7c:ae:22:d3:81:3f:1a:f2.  
  4. Are you sure you want to continue connecting (yes/no)? yes  
  5. Warning: Permanently added '10.0.0.153' (RSA) to the list of known hosts.  
  6. root@10.0.0.153's password:   
  7. sending incremental file list  
  8. ./  
  9. 1  
  10. 2  
  11. 3  
  12. 4  
  13. 5  
  14. 6  
  15.   
  16. sent 303 bytes  received 129 bytes  78.55 bytes/sec  
  17. total size is 0  speedup is 0.00  

3、查询模式
以root用户身份查看远程主机的目录

  1. [root@localhsot /]# rsync -a root@10.0.0.153:/tongbu001/  
  2. root@10.0.0.153's password:   
  3. drwxr-xr-x        4096 2015/10/28 00:22:11 .  
  4. -rw-r--r--           0 2015/10/28 00:22:11 1  
  5. -rw-r--r--           0 2015/10/28 00:22:11 2  
  6. -rw-r--r--           0 2015/10/28 00:22:11 3  
  7. -rw-r--r--           0 2015/10/28 00:22:11 4  
  8. -rw-r--r--           0 2015/10/28 00:22:11 5  
  9. -rw-r--r--           0 2015/10/28 00:22:11 6  

查看本地目录

  1. [root@localhost /]# rsync -a /tongbu001/  
  2. drwxr-xr-x        4096 2015/10/28 00:22:11 .  
  3. -rw-r--r--           0 2015/10/28 00:22:11 1  
  4. -rw-r--r--           0 2015/10/28 00:22:11 2  
  5. -rw-r--r--           0 2015/10/28 00:22:11 3  
  6. -rw-r--r--           0 2015/10/28 00:22:11 4  
  7. -rw-r--r--           0 2015/10/28 00:22:11 5  
  8. -rw-r--r--           0 2015/10/28 00:22:11 6  

4、服务器模式(rsync服务器)

服务器A

  1. [root@localhost /]# echo "backup:password" > /etc/server.pass  
  2. [root@localhost /]# chmod 600 /etc/server.pass   
  3. [root@localhost /]# cat /etc/rsyncd.conf   
  4. uid = nobody    #制定当该模块传输文件时守护进程应该具有的用户ID  
  5. gid = nobody    #制定当该模块传输文件时守护进程应该具有的用户组ID  
  6. use chroot = no  
  7. max connections = 10    #最大并发连接数量  
  8. strict modes = yes      #检查口令文件的权限,如果为yes,则密码文件的权限必须为root  
  9. port = 873  
  10. pid file = /var/run/rsyncd.pid  
  11. lock file = /var/run/rsync.lock  
  12. log file = /var/log/rsyncd.log  
  13.   
  14. [tonbu001]  #定义一个模块的开始,tongbu001就是对应的模块名称  
  15. path = /tongbu  #制定需要备份的文件或目录  
  16. comment = tongbu file     
  17. ignore errors   #忽略一些无关的I/O错误  
  18. read only = no  #设置为no表示客户端可上传文件,yes为不能上传  
  19. write only = no #设置为no表示客户端可下载文件,yes为不能下载  
  20. hosts allow = *  
  21. hosts deny = 192.168.12.131  
  22. list = false    #设定当客户请求可以使用的模块列表时,该模块是否被列出。默认值是true  
  23. uid = root  
  24. gid = root  
  25. auth users = backup  
  26. secrets file = /etc/server.pass #制定用户名和密码  
  27.   
  28. #在A服务器上启动守护进程  
  29. [root@localhost /]# /usr/bin/rsync --daemon   
  30. [root@localhost /]# ps -ef | grep rsync  
  31. root      3263     1  0 01:32 ?        00:00:00 /usr/bin/rsync --daemon  
  32. root      3265  1612  0 01:33 pts/1    00:00:00 grep rsync  

B服务器

  1. [root@localhost ~]# echo "password" > /etc/server.pass  
  2. [root@localhost ~]# chmod 600 /etc/server.pass  
  3. [root@localhost /]# /usr/bin/rsync -vzrtopg --delete --progress --exclude "*access" --exclude "debug*" backup@192.168.1.143::tongbu /tongbu --password-file=/etc/server.pass  

命令解释

  1. -v : --verbose 详细模式输出  
  2. -z : --compress 在传输时对备份的文件进行压缩处理  
  3. -r : --recursive 对子目录以递归模式处理  
  4. -t : --times 用来保持文件时间信息  
  5. -o : --owner 保持文件的属主信息  
  6. -p : --perms 用来保持文件的权限  
  7. -g : --group 保持文件的组信息  
  8. --delete : 以rsync服务器的信息为基准同步  
  9. --progress : 显示数据镜像同步的过程  
  10. --exclude : 排除不需要的传输文本类型  

5、rsync+inotify 实时同步

[inotify主页][1]

查看是否支持inotify

  1. [root@localhost /]# ll /proc/sys/fs/inotify/  
  2. total 0  
  3. -rw-r--r-- 1 root root 0 Oct 27 22:52 max_queued_events  
  4. -rw-r--r-- 1 root root 0 Oct 27 22:52 max_user_instances  
  5. -rw-r--r-- 1 root root 0 Oct 27 22:52 max_user_watches  

有上面3个文件,表示系统默认支持inotify

安装

  1. [root@localhost src]# tar zxf inotify-tools-3.14.tar.gz   
  2. [root@localhost src]# cd inotify-tools-3.14  
  3. [root@localhost inotify-tools-3.14]# ./configure && make && make install  
  4. [root@local-centos01 inotify-tools-3.14]# ll /usr/local/bin/inotifywa*  
  5. -rwxr-xr-x. 1 root root 44287 Oct 27 23:08 /usr/local/bin/inotifywait  
  6. -rwxr-xr-x. 1 root root 41377 Oct 27 23:08 /usr/local/bin/inotifywatch  
  7.   
  8. inotifywait # 用户等待文件或文件集上的一个特定事件,可以监控任何文件和目录设置,并且可以递归监控整个目录树  
  9. inotifywatch # 手机监控文件系统统计数据,包括每个inotify事件发生多少次信息  

inotify相关参数

  1. /proc/sys/fs/inotify/max_queued_events : 表示调用inotify_init 时分配到inotify instance中可排队的event数的最大值,超出这个值得事件被丢弃,但会触发IN_Q_OVERFLOW事件  
  2. /proc/sys/fs/inotify/max_user_instances : 表示每一个real user ID可创建的inotify instatnces数量的上限  
  3. /proc/sys/fs/inotify/max_user_watches : 表示每个inotify实例相关联的watches的上限,也就是每个inotify实例可监控的最大目录数量。如果监控的文件书目录巨大,需要根据情况适当增加此值的大小。例如  
  4. echo "30000000" > /proc/sys/fs/inotify/max_user_watches  

inotifywait 相关参数

  1. -m : --monitor 表示始终保持事件监听状态  
  2. -r : --recursive 表示递归查询目录  
  3. -q : --quiet 表示打印出监控事件  
  4. -e : --event 可以指定要监控的事件,常见的有modify、delete  

web1

  1. [root@localhost /]# vim /etc/rsyncd.conf  
  2. uid = nobody  
  3. gid = nobody  
  4. use chroot = no  
  5. max connections = 10  
  6. strict modes = yes  
  7. pid file = /var/run/rsyncd.pid  
  8. lock file = /var/run/rsync.lock  
  9. log file = /var/log/rsyncd.log  
  10.   
  11. [web1]  
  12. path = /web1/wwwroot/  
  13. comment = web1 file  
  14. ignore errors  
  15. read only = no  
  16. write only = no  
  17. hosts allow = 192.168.1.143  
  18. hosts deny = *  
  19. list = false  
  20. uid = root  
  21. gid = root  
  22. auth users = web1user  
  23. secrets file = /etc/web1.pass  

server 端

  1. [root@localhost ~]# ./inotify.sh &  
  2. [root@localhost ~]# cat inotify.sh   
  3. #!/bin/sh  
  4.   
  5. # get the current path  
  6. CURPATH=`pwd`  
  7.   
  8. src=/web/wwwroot/  
  9. host1=192.168.1.153  
  10. dst1=web1  
  11. user1=web1user  
  12.   
  13. /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' \  
  14. -e close_write,modify,delete,create,attrib $src | while read files; do  
  15.   
  16.     /usr/bin/rsync -vzrtog --delete --progress --password-file=/etc/server.pass $src $user1@$host1::$dst1  
  17.     echo "${files} was rsynced" >> /tmp/rsync.log 2>&1  
  18. done  

[1]: https://github.com/rvoicilas/inotify-tools/wiki

» 转载请注明来源:若我若鱼 » rsync数据镜像同步工具

Leave a Reply

Your email address will not be published. Required fields are marked *

12 + 5 =