1.两款工具的介绍

rsync(remote synchronize),一款开源的额快速实现远程同步和数据备份的优秀工具。可使本地主机不同分区或目录间及本地和远程主机间的数据快速同步镜像,远程备份等功能同时在同步文件的同时,保持原来文件的权限、时间、软硬连接等信息。

Rsync的特性: 1) 支持拷贝特殊文件如链接,设备等 2)可以有排除指定文件或目录同步的功能,相当于打包命令tar 3)可以保持原来文件或目录的权限,时间,软硬链接等所有属性均不改变 4)可实现增量同步,即只同步发生变化的数据,因此数据传输效率更高 5)可以使用rcp,rsh,ssh等方式来配合传输文件,也可以通过直接的socker链接 6)支持匿名的或认证的进程模式传输,方便进行数据备份及镜像

Rsync的六种工作模式:

  1. 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:rsync -a /data /backup
  2. 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如:rsync -avz *.c foo:src
  3. 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:rsync -avz foo:src/bar /data
  4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack
  5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www
  6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www

inotify 可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里内容都会成为检测对象。

2.rsync

-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。 -v, –verbose 详细模式输出。 -z, –compress 对备份的文件在传输时进行压缩处理。 -q, –quiet 精简输出模式。 -r, –recursive 对子目录以递归模式处理。 -R, –relative 使用相对路径信息。 -h, –help 显示帮助信息。

  1. # 1. 推送方式
  2. ## 同步/home/anan/bin/下的所有文件到10.1.11.145主机/home/anan/bin目录
  3. rsync -avz -e 'ssh' /home/anan/bin/* anan@10.1.11.145:/home/anan/bin
  4. # 2. 拉去方式
  5. ## 将10.1.11.177的/home/anan/bin目录下的所有文件都同步到本机的/home/anan/bin目录
  6. rsync -avz -e 'ssh' anan@10.1.11.177:/home/anan/bin/* /home/anan/bin
  1. # 1. 编辑后台服务方式
  2. ## disable=yes 改成 disable=no,并重启xinetd服务。
  3. vim /etc/xinetd.d/rsync
  4. service rsync
  5. {
  6. disable = yes #修改为no
  7. flags = IPv6
  8. socket_type = stream
  9. wait = no
  10. user = root
  11. server = /usr/bin/rsync
  12. server_args = --daemon
  13. log_on_failure += USERID
  14. }
  15. service xinetd restart
  1. # 2. 配置rsync的文件
  2. uid=root
  3. gid=root
  4. max connections=4
  5. log file=/var/log/rsyncd.log
  6. pid file=/var/run/rsyncd.pid
  7. lock file=/var/run/rsyncd.lock
  8. secrets file=/etc/rsyncd.passwd
  9. hosts allow=10.1.11.33/22
  10. [www]
  11. comment= backup web
  12. path=/var/www/
  13. read only = no
  14. exclude=test
  15. auth users=root
  16. # 3.创建密码文件
  17. echo "root:password" >> /etc/rsyncd.passwd #这里输入你的密码
  18. chmod 600 /etc/rsyncd.passwd
  19. # 4.开始备份和数据恢复
  20. rsync -avz --progress --delete root@10.1.11.33:/var/www /databack/
  21. rsync -avz --progress /var/www root@10.1.11.233:/databack