rsync源服务器:
Rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录数,支持增量备份保持链接和权限,且采用优化的同步算法,传输前执行压缩,非常适用于异地备份镜像服务器等应用.
Rsync(远程同步)工具,以实现快速安全高效的异地备份.
目前最新版3.0.9.由wayne davison进行维护,作为一种常用的文件备份工具, Rsync往往是linux/unix系统默认的基本组件之一.rsync的官方站点http://rsync.samba.org/
远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为备份源(同步源).在下行同步(下载)中,备份源负责提供文档的原始位置,发起端应对该位置具有读取权限;在上行同步(上传)中,备份源负责提供文档的目标位置,发起端应对该位置具有写入权限.
Rsync下行同步示意图
rsync命令的基本用法:
1)命令格式及常用备份选项
格式:rsync 【选项】 源文件 目标文件
常见的选项:
-a,--archive 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于-rlptgoD
-r,–recursive 对子目录以递归模式处理
-l,--links 表示拷贝链接文件
-p , --perms 表示保持文件原有权限
-t , --times 表示保持文件原有时间
-g , --group 表示保持文件原有属用户组
-o , --owner 表示保持文件原有属主
-D , --devices 表示块设备文件信息
-z , --compress 表示压缩传输
-H 表示硬连接文件
-A 保留ACL属性信息
-P 显示传输进度
-u, --update 仅仅进行更新,也就是跳过所有已经存在于目标位置,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
--port=PORT 指定其他的rsync服务端口
--delete 删除那些目标位置有而原始位置没有的文件
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes /second
--filter “- 文件名”需要过滤的文件
--exclude= :需要过滤的文件
-v 显示同步过程的详细信息
2)配置源的表示方法
执行远程同步任务时,rsync命令需要指定备份源服务器中的资源位置,对于下行备份操作,备份源对应”原始位置”;对于上行备份操作,备份源对应”目标位置”.
ØSSH备份源:表示为”用户名@主机地址:目录路径”的形式,用一个冒号分隔,验证字串与SSH登录类似.
列:Rsync -avz backuper@192.168.4.200:/var/www/html /opt
ØRsync备份源:表示为”用户名@主机地址::共享模块名”或者”rsync://用户名@主机地址/共享模块名”的形式
列:rsync -avz backuper@192.168.4.200::wwwroot /root
或 rsync -avz rsync://backuper@192.168.4.200/wwwroot /root
注:使用Ssh备份源:好处—能够给予更安全的远程连接,增强备份的保密性.
配置: Ssh备份源只要确认源文件夹位置,并准备一个备份操作用户即可.
Rsync不仅可以用作远程同步发起端(客户端),也可以作为是守护进程运行.
配置:rsync备份源需要建立配置文件rsync.conf 创建备份帐号,然后将rsync程序以”--daemon”选项运行.(rsync --daemon启动rsync服务,kill $(cat /var/run/rsyncd.pid)关闭rsync服务)
备份操作类型
§本地同步
•rsync ... 本地目录1 本地目录2
§rsync+ssh同步
•rsync ... SSH源本地目录
•rsync ... 本地目录 SSH源
§rsync+rsync同步
•rsync ... rsync源本地目录
•rsync ... 本地目录 rsync源
rsync+inotify实时同步
linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取删除移动修改等,利用这一机制.可以非常方便的实现文件异动告警增量备份,并针对目录或文件的变化及时做出反应.
使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)----只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静默等待状态.这样就避免了按固定周期备份时存在的延迟性.
Inotify+rsync触发式上行同步
Inotify通知机制由linux内核提供,因此主要做本机监控,在触发式备份中应用更适合上行同步.
安装inotify-tools工具
使用inotify机制还需要安装inotify-tools工具,以便使用inotifywait inotifywatch辅助工具程序,用来监控汇总改动情况.目前新版本3.14,可从http://inotify-tools.sourceforge.net/下载.
注:Inotifywait:用于持续监控,实时输出
Inotifywatch:用来收集文件系统变动情况,并在运结束后输出汇总的变化情况。
Inotifywait命令中的可选参数:
-e:用来指定要监控那些事件
-m:表示持续监控
-r:表示递归整个目录
-q:简化输出信息
Inotifywait可监控 modify(修改)create(创建)move(移动)delete(删除)arrb(属性修改)等事件。
列:inotifywait –mrq -e modify,create,move,delete,arrb /var/www/html(ctrl+c终止)
配置触发备份任务时只要用到inotifywait
编写触发式同步脚本:
Vim /root/rsync_get_wwwroot.sh
Chmod +x /root/rsync_get_wwwroot.sh
Crontab -e //编写任务计划
30 22 * * * /root/rsync_get_wwwroot.sh //每天22:30执行脚本
Service crond start
Chkconfig crond on
补充:
Linux文件系统的ACL访问控制机制,通过Setfacl命令设置:
-R:表示递归操作
-m:用来指定权限
对设有ACL的目录或文件,执行ls –l命令查看时会出现权限字串末尾多一个符号“+”
Getfacl可以查看到详细的ACL属性
列:setfacl –R –m user:daemon:rwx /var/www/html
Getfacl /var/www/html
希望新建立的文件子目录也具有相同的ACL属性,则应为指定目录设置默认ACL属性----setfacl权限模式中添加“default:”部分
列: setfacl -m default:user:daemon:rwx /var/www/html
Getfacl/var/www/html | grep default