目录:
相关概念
编译安装rsync
rsync简单使用示例
rsync + crontab实现文件定时同步,并发送邮件提醒
rsync daemon + inotify实现文件实时同步
一、相关概念:
1、rsync:remote synchronize,一款开源、快速的、可实现全量及增量本地或远程数据同步的软件,下载地址https://rsync.samba.org/。
2、rsync特点:
(1)传输速度快,首次全量传输,后续会对比文件的不同,只传输文件更新部分,实现增量传输;
(2)传输安全性高;
(3)支持匿名传输,方便网站镜像;
(4)支持传输软链接、设备等特殊文件;
(5)支持传输时保留源文件的权限、属主、属组、时间、软硬链接等信息;
(6)支持传输时排除指定的目录或文件;
(7)支持传输时压缩,使用更少的带宽,提高传输效率。
3、rsync工作模式:
(1)单个服务器本地目录之间传输数据(类似cp);
(2)借助SSH通道传输数据(类似scp);
(3)以daemon守护进程方式传输数据(需要/etc/rsyncd.conf配置文件)。
4、inotify:一种强大的、异步的文件系统事件监控机制。Linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是提供监控功能的软件。
5、inotify-tools:可在命令行下提供对文件系统事件的监控,包括inotifywait和inotifywatch两个命令行工具,下载地址https://github.com/inotify-tools/inotify-tools/releases。
(1)inotifywait:在被监控的目录或文件中等待特定文件系统事件(如open、close、delete等)发生,执行后处于阻塞状态;
(2)inotifywatch:收集被监控文件系统的数据,统计文件系统事件发生的次数。
二、编译安装rsync:
1、安装编译环境:# yum -y groupinstall "Development Tools"
2、编译安装rsync:
# tar -xf rsync-3.1.3.tar.gz -C /usr/src
# cd /usr/src/rsync-3.1.3
# ./configure --prefix=/usr/local/rsync --enable-profile
# make && make install
备注:CentOS 7.7中yum安装的rsync版本为3.1.2
3、配置环境变量:
# vim /etc/profile.d/rsync.sh
export PATH=/usr/local/rsync/bin:$PATH
# . /etc/profile.d/rsync.sh
4、查看rsync版本:# rsync --version
5、常用选项:
选项 |
含义 |
-v |
详细模式输出,传输时显示进度等信息 |
-q |
精简模式输出 |
-c |
根据校验和跳过,而不是修改时间和文件大小 |
-a |
归档模式,以递归方式传输文件,并保持文件所有属性,等同于-rlptgoD选项 |
-r |
递归方式传输目录下的所有子目录及文件 |
-R |
使用相对路径名 |
-b |
传输的同时创建备份,如果目标目录已经存在同名文件时,将旧文件重命名为~filename后缀 |
--backup-dir=DIR |
定义备份文件存放目录 |
--suffix=SUFFIX |
定义备份后缀 |
-u |
仅仅进行更新,即跳过所有已经存在于目标目录,且文件时间晚于要备份的文件 |
-d |
不以递归方式传输目录下的所有子目录及文件 |
-l |
保留符号链接(软链接) |
-L |
如果传输的文件为软链接,则传输软链接指向的源文件 |
-H |
保留硬链接 |
-p |
保留文件权限 |
-E |
保留可执行权限 |
-X |
保留扩展属性 |
-o |
保留文件属主 |
-g |
保留文件属组 |
-t |
保留文件修改时间 |
-n |
试运行,不做任何更改 |
-W |
完整传输文件(不使用delta-xfer算法) |
-x |
不跨越文件系统边界 |
-e |
定义要使用的远程Shell |
--existing |
仅更新已经存在于目标目录的文件,而不更新新创建的文件 |
--ignore-existing |
不更新已经存在于目标目录的文件 |
--delete |
删除目标目录有,但源目录没有的文件 |
--delete-excluded |
删除目标目录有,但源目录没有的文件 |
--ignore-errors |
即使有I/O错误也要删除 |
--force |
强制删除不为空的目录 |
--max-delete=NUM |
最多删除NUM个文件 |
--max-size=SIZE |
不传输任何大于SIZE的文件 |
--min-size=SIZE |
不传输任何小于SIZE的文件 |
--partial |
保留部分传输的文件,为加快再次传输 |
--partial-dir=DIR |
在DIR中保留部分传输的文件 |
--timeout=SECONDS |
定义I/O超时秒数 |
--contimeout=SECONDS |
定义后台程序连接超时秒数 |
-I |
不跳过具有相同大小和修改时间的文件 |
--size-only |
跳过大小匹配的文件 |
-T DIR |
在DIR中创建临时文件 |
-z |
传输时压缩文件 |
--compress-level=NUM |
定义压缩级别 |
--exclude=PATTERN |
排除模式匹配的文件 |
--exclude-from=FILE |
从FILE中读取排除模式 |
--include=PATTERN |
不排除模式匹配的文件 |
--include-from=FILE |
从FILE中读取包含模式 |
--address=ADDRESS |
定义IP地址 |
--port=PORT |
定义rsync端口号 |
--stats |
提供文件传输统计信息 |
--progress |
传输时显示进度 |
-P |
等同于--partial --progress |
--log-file=FILE |
定义日志文件 |
--log-file-format=FMT |
定义日志文件记录格式 |
--password-file=FILE |
定义用户认证文件 |
--list-only |
列出文件而非复制文件 |
--version |
查看版本号 |
-h |
查看帮助信息 |
三、rsync简单使用示例:
1、将test1目录下的a、b文件同步至test2目录:
# rsync -avz /test1/{a,b} /test2
2、将test1目录下的c目录同步至test2目录:
# rsync -avz /test1/c /test2
3、假设test1目录下有a、b、c三个文件,test2目录下有a、d两个文件和e一个目录,保证test2目录内容与test1一致:
# rsync -avz --delete /test1/ /test2/
4、假设test1目录下有a、b、c、d、e五个文件,test2目录为空目录,除了b、d以外的test1目录下的所有文件都同步至test2目录:
# rsync -avz --exclude={b,d} /test1/ /test2/
5、假设test1目录下有a、b、c、d、e五个文件,test2目录下有x、y、z三个目录,除了b、d以外的test1目录下的所有文件都同步至test2目录,且删除test2目录下的x、y、z三个目录:
# rsync -avz --delete --exclude={b,d} /test1/ /test2/
6、将本地192.168.0.120服务器test1目录下的所有文件和目录同步至远程192.168.0.121服务器test2目录:
# rsync -avz -e 'ssh -p 22' /test1/ [email protected]:/test2
7、列出远程192.168.0.121服务器test2目录下的内容:
# rsync [email protected]:/test2/
8、将远程192.168.0.121服务器整个test2目录同步至本地192.168.0.120服务器test1目录:
# rsync -avz -e 'ssh -p 22' [email protected]:/test2 /test1
备注:
(1)示例6~示例8中,远程192.168.0.121服务器中需要事先安装rsync,否则会提示“rsync error: remote command not found”;
(2)如果同步的是目录中的所有内容,需要在目录后加/;如果同步的是整个目录,则不需要在目录后加/。
四、rsync + crontab实现文件定时同步,并发送邮件提醒:
1、演示环境:
IP |
操作系统 |
主机名 |
目录 |
角色 |
192.168.0.120 |
CentOS 7.7 x86_64 |
web |
/usr/share/nginx/html |
本地服务器(rsync客户端) |
192.168.0.121 |
CentOS 7.7 x86_64 |
backup |
/data/nginx |
远程服务器(rsync服务端) |
目标:每隔2小时将web节点/usr/share/nginx/html目录下的所有子目录和文件同步至backup节点/data/nginx目录。
2、准备工作:
(1)两个节点关闭firewalld和SELinux;
(2)两个节点配置主机名;
(3)两个节点时间同步;
(4)两个节点修改/etc/hosts配置文件:
# vim /etc/hosts
192.168.0.120 web
192.168.0.121 backup
(5)web节点配置免密登录backup节点:
# ssh-keygen -t rsa -b 2048 -P ""
# ls ~/.ssh
# ssh-copy-id root@backup
# ssh root@backup
web节点:# cat ~/.ssh/id_rsa.pub
backup节点:# cat ~/.ssh/authorized_keys
备注:内容一致
(6)web节点安装配置Nginx:
# yum -y install epel-release
# yum -y install nginx
# systemctl start nginx
# systemctl status nginx
# ss -tunlp | grep -w :80
# ls /usr/share/nginx/html
(7)web节点安装配置crond:
# yum -y install crontabs
# systemctl start crond
# systemctl status crond
# systemctl enable crond
(8)web节点配置邮件服务:
# yum -y install mailx
# cp /etc/mail.rc{,.bak}
# vim /etc/mail.rc,末尾新增如下代码:
set smtp=smtp.qq.com
set smtp-auth-password=QQ邮箱授权码
set smtp-auth=login
# echo "Hello World" | mail -s "test" [email protected]
(9)backup节点创建目录:# mkdir -pv /data/nginx
3、web节点安装配置rsync:
(1)安装编译环境:# yum -y groupinstall "Development Tools"
(2)编译安装rsync:
# tar -xf rsync-3.1.3.tar.gz -C /usr/src
# cd /usr/src/rsync-3.1.3
# ./configure --prefix=/usr/local/rsync --enable-profile
# make && make install
(3)配置环境变量:
# vim /etc/profile.d/rsync.sh
export PATH=/usr/local/rsync/bin:$PATH
# . /etc/profile.d/rsync.sh
4、web节点编写同步脚本:
# mkdir -pv /scripts
# vim /scripts/rsync_backup.sh
#!/bin/bash
/usr/local/rsync/bin/rsync -azL --delete -e 'ssh -p 22' /usr/share/nginx/html/ [email protected]:/data/nginx/
if [ $? == 0 ]; then
/usr/bin/echo "successfully" | /usr/bin/mail -s "192.168.0.120 nginx backup" [email protected]
else
/usr/bin/echo "failed" | /usr/bin/mail -s "192.168.0.120 nginx backup" [email protected]
fi
# chmod +x /scripts/rsync_backup.sh
5、web节点配置任务计划:
# crontab -e
0 */2 * * * /scripts/rsync_backup.sh &> /dev/null
# crontab -l
6、测试同步:
(1)第一次同步:
web节点:
backup节点:
收取邮件:
(2)创建文件:
web节点创建文件:# echo "error" > error.html
backup节点查看:
收取邮件:
备注:为了演示效果,将任务计划时间间隔调整为3分钟
(3)删除文件:
web节点删除文件:# rm -rf 404.html 50x.html nginx-logo.png poweredby.png
backup节点查看:
五、rsync daemon + inotify实现文件实时同步:
1、 演示环境:
IP |
操作系统 |
主机名 |
目录 |
角色 |
192.168.0.120 |
CentOS 7.7 x86_64 |
web |
/usr/share/nginx/html |
本地服务器(rsync客户端) |
192.168.0.121 |
CentOS 7.7 x86_64 |
backup |
/data/nginx |
远程服务器(rsync服务端) |
目标:将web节点/usr/share/nginx/html目录下的所有子目录和文件实时同步至backup节点/data/nginx目录。
2、准备工作:
(1)两个节点关闭firewalld和SELinux;
(2)两个节点配置主机名;
(3)两个节点时间同步;
(4)两个节点修改/etc/hosts配置文件:
# vim /etc/hosts
192.168.0.120 web
192.168.0.121 backup
(5)web节点配置免密登录backup节点:
# ssh-keygen -t rsa -b 2048 -P ""
# ls ~/.ssh
# ssh-copy-id root@backup
# ssh root@backup
web节点:# cat ~/.ssh/id_rsa.pub
backup节点:# cat ~/.ssh/authorized_keys
备注:内容一致
(6)web节点安装配置Nginx:
# yum -y install epel-release
# yum -y install nginx
# systemctl start nginx
# systemctl status nginx
# ss -tunlp | grep -w :80
# ls /usr/share/nginx/html
(7)backup节点创建目录:# mkdir -pv /data/nginx
3、两个节点安装配置rsync:
(1)安装编译环境:# yum -y groupinstall "Development Tools"
(2)编译安装rsync:
# tar -xf rsync-3.1.3.tar.gz -C /usr/src
# cd /usr/src/rsync-3.1.3
# ./configure --prefix=/usr/local/rsync --enable-profile
# make && make install
(3)配置环境变量:
# vim /etc/profile.d/rsync.sh
export PATH=/usr/local/rsync/bin:$PATH
# . /etc/profile.d/rsync.sh
4、backup节点修改rsyncd.conf配置文件:
# mv /etc/rsyncd.conf{,.bak}
# vim /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
port = 873
address = 192.168.0.121
[nginx]
comment = nginx html docs
path = /data/nginx
use chroot = no
max connections = 5
log file = /var/log/rsyncd.log
lock file = /var/run/rsyncd.lock
read only = no
list = no
uid = root
gid = root
auth users = ryuser
secrets file = /etc/.rsync.passwd
hosts allow = 192.168.0.120
ignore errors
timeout = 600
dont compress = *.zip *.rar *.7z *.tar *.gz *.xz *.bz2 *.tar.gz *.tar.xz *.tar.bz2 *.tgz *.z
# chmod 600 /etc/rsyncd.conf
备注:常用参数介绍(# man rsyncd.conf)
全局参数 |
含义 |
pid file = /var/run/rsyncd.pid |
保存进程号的pid文件存放位置 |
port = 873 |
默认监听端口号 |
address = 192.168.0.121 |
默认监听地址 |
模块参数 |
含义 |
[nginx] |
模块名称,可以定义多个 |
comment = nginx html docs |
定义当客户端获取可用模块列表时,显示在模块名称旁的描述字符串 |
path = /data/nginx |
传输数据存放目录 |
use chroot = no |
禁止禁锢在path参数定义的目录中 |
max connections = 5 |
定义允许的客户端最大并发连接数,当达到最大值时,连接的任何客户端都将收到一条消息,告诉它们稍后再试,默认值为0,表示没有限制 |
log file = /var/log/rsyncd.log |
日志文件存放位置,启动rsync后会自动创建此文件,无需手动创建 |
lock file = /var/run/rsyncd.lock |
定义用于支持“max connections最大并发连接数”参数的锁文件存放位置 |
read only = no |
定义客户端是否能够上传文件,默认情况下为只读 |
list = no |
定义当客户端要求列出可用模块时是否列出该模块,如果该值为no,则当“hosts allow”或“hosts deny”拒绝客户端访问该模块时,守护进程将假装该模块不存在,默认情况下,模块是可列出的 |
uid = root |
定义当后台程序以root用户身份运行时,与该模块之间的文件传输应发生的用户名或用户ID,超级用户运行时的默认设置是切换到系统的nobody用户,非超级用户的默认设置是不更改用户 |
gid = root |
定义访问模块时使用的一个或多个组名/标识,第一个组将是默认组,任何额外的组都将设置为附加组,超级用户运行时的默认设置是切换到系统的nobody(或nogroup)组,而不使用其它附加组,非超级用户的默认设置是不更改任何组属性 |
exclude |
定义采用以空格分隔的守护程序排除模式列表,模式可以用“-”或“+”限定,以显式定义exclude/include,只有一个“exclude”参数可以应用于给定模块 |
include |
使用“include”覆盖“exclude”参数的效果,只有一个“include”参数可以应用于给定模块 |
exclude from |
定义守护进程排除模式的文件,每行一个,只有一个“exclude from”参数可以应用于给定模块 |
include from |
定义守护进程包含模式的文件,类似于“exclude from”,只有一个“include from”参数可以应用于给定模块 |
auth users = ryuser |
定义以逗号或空格分隔的授权规则列表,在最简单的形式中,列出允许连接到该模块的用户名,用户名不需要存在于本地系统中,如果设置了“auth users”,则将要求客户端提供连接到模块的用户名和密码,纯文本用户名和密码存储在由“secrets file”参数定义的文件中,默认情况下,所有用户都可以在没有密码的情况下进行连接(称为“匿名rsync”) |
secrets file = /etc/.rsync.passwd |
定义用于验证模块的用户名密码,连同“auth users”参数一起使用 |
hosts allow = 192.168.0.120 |
允许数据同步的客户端IP,可以设置多个,用英文状态逗号分隔 |
hosts deny = 192.168.0.0/24 |
禁止数据同步的客户端IP,可以设置多个,用英文状态逗号分隔 |
ignore errors |
定义rsyncd在决定是否运行传输的删除阶段时忽略守护进程上的I/O错误,通常,如果发生任何I/O错误,rsync会跳过--delete步骤,以防止由于临时资源不足或其它I/O错误而导致灾难性删除,在某些情况下,测试会适得其反,因此可以使用该参数关闭此行为 |
timeout = 600 |
客户端连接服务端的超时时长,单位秒,默认值为0,表示不会超时 |
dont compress = *.zip *.rar *.7z *.tar *.gz *.xz *.bz2 *.tar.gz *.tar.xz *.tar.bz2 *.tgz *.z |
数据同步时不会执行压缩的文件类型 |
5、backup节点创建用户认证文件:
# echo "ryuser:root@1234" > /etc/.rsync.passwd
# chmod 600 /etc/.rsync.passwd
备注:服务端文件格式,用户名:密码,可以设置多个,每行一个
6、backup节点配置rsync:
# rsync --daemon
# ps -ef | grep rsync
# ss -tunlp | grep -w 873
# echo "/usr/local/rsync/bin/rsync --daemon" >> /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local
备注:
(1)使用命令# rsync --daemon --help查看rsync daemon模式下的帮助信息;
(2)结束rsync进程可使用命令# pkill rsync 或 # yum -y install psmisc # killall rsync
7、web节点创建用户认证文件:
# echo "root@1234" > /etc/.rsync.passwd
# chmod 600 /etc/.rsync.passwd
备注:客户端文件中只需包含密码,且密码要和backup节点(服务端)一致
8、web节点查看内核是否支持inotify:
# ls /proc/sys/fs/inotify
# cat /proc/sys/fs/inotify/max_queued_events
# cat /proc/sys/fs/inotify/max_user_instances
# cat /proc/sys/fs/inotify/max_user_watches
备注:
(1)如果显示max_queued_events、max_user_instances和max_user_watches,说明内核支持inotify;
(2)max_queued_events:定义inotify实例事件队列的最大长度,如果定义的值太小,会出现“Event Queue Overflow”错误;
(3)max_user_instances:定义每个用户最多可以创建的inotify实例数量;
(4)max_user_watches:定义每个inotify实例最多可以监控的目录数量。
9、web节点调整inotify内核参数大小:
# vim /etc/sysctl.conf,末尾新增如下代码:
fs.inotify.max_queued_events = 50000000
fs.inotify.max_user_instances = 65535
fs.inotify.max_user_watches = 50000000
# sysctl -p
10、web节点安装配置inotify-tools:
(1)编译安装inotify-tools:
# tar -xf inotify-tools-3.20.2.2.tar.gz -C /usr/src
# cd /usr/src/inotify-tools-3.20.2.2
# ./configure --prefix=/usr/local/inotify-tools
# make && make install
备注:CentOS 7.7中先安装epel源,然后通过yum安装的inotify-tools版本为3.14
(2)配置环境变量:
# vim /etc/profile.d/inotify-tools.sh
export PATH=/usr/local/inotify-tools/bin:$PATH
# . /etc/profile.d/inotify-tools.sh
(3)inotifywait命令常用选项:
选项 |
含义 |
-h |
查看帮助信息 |
@ |
排除无需监控的文件 |
--exclude |
排除与扩展正则表达式 |
--excludei |
排除与扩展正则表达式 |
--include |
不排除与扩展正则表达式 |
--includei |
不排除与扩展正则表达式 |
-m |
始终保持事件监听状态直到超时,即捕获一个事件后不退出,默认捕获一个事件后立即退出 |
-d |
与-m选项含义基本一致,后台运行 |
-r |
递归监控目录,包括子目录和文件 |
--fromfile |
从标准输入或 |
--outfile |
打印事件至 |
-s |
发送错误至syslog,而非标准错误 |
-q |
仅打印监控事件信息 |
不打印任何信息 |
|
--format |
定义事件输出格式: Ø %w:事件发生时,被监控的目录名 Ø %f:事件发生时,被监控目录中触发事件的文件名 Ø %e:替换为发生的事件,用英文状态逗号分隔 Ø %T:使用由--timefmt选项定义的时间输出格式,此格式是通过strftime函数进行匹配时间格式信息的 |
--timefmt |
定义时间输出格式: Ø %d:十进制方式显示每月的第几天(范围01~31) Ø %D:显示“月/天/年(%m/%d/%y)” Ø %F:显示“年-月-日(%Y-%m-%d)” Ø %H:十进制方式显示小时,24小时制(范围00~23) Ø %m:十进制方式显示月份(范围01~12) Ø %M:十进制方式显示分钟(范围00~59) Ø %S:十进制方式显示秒钟(范围00~59) Ø %T:显示“时:分:秒(%H:%M:%S)” Ø %y:十进制方式显示年份,不包括世纪信息(范围00~99) Ø %Y:十进制方式显示年份,包括世纪信息 |
-t |
当监听单个事件时,在等待事件 |
-e |
定义监听的事件,如省略,则监听所有事件 |
(4)inotifywait命令-e选项可定义的事件类型:
事件类型 |
含义 |
access |
文件或目录内容被读取 |
modify |
文件或目录内容被修改 |
attrib |
文件或目录属性被改变 |
close_write |
读写模式下,文件或目录被关闭 |
close_nowrite |
只读模式下,文件或目录被关闭 |
close |
无论读/写模式如何,文件或目录被关闭 |
open |
文件或目录被打开 |
moved_to |
文件或目录被移动至监控目录 |
moved_from |
文件或目录从监控目录移动至当前目录 |
move |
文件或目录移动至监控目录或从监控目录移动至当前目录 |
move_self |
被监控的文件或目录被移动 |
create |
在监控目录中创建文件或目录 |
delete |
在监控目录中删除文件或目录 |
delete_self |
文件或目录被删除 |
umount |
包含文件或目录的文件系统被卸载 |
11、web节点测试inotifywait事件监控:
(1)创建文件:
第一个终端:# inotifywait -mrq --timefmt '%y/%m/%d %H:%M' --format '%T %w%f' -e create /tmp
第二个终端:# touch /tmp/a.txt
第一个终端:
Ctrl + c
(2)删除文件:
第一个终端:# inotifywait -mrq --timefmt '%F %T' --format '%T %w%f %e' -e delete /tmp
第二个终端:# rm -f /tmp/a.txt
第一个终端:
Ctrl + c
备注:因为inotifywait监控时,终端处于阻塞状态,所以要开启两个终端进行测试
12、web节点测试同步数据至backup节点:
(1)将web节点tmp目录下的所有文件和目录同步至backup节点/data/nginx目录:
# rsync -avz --password-file=/etc/.rsync.passwd /tmp/ [email protected]::nginx
(2)将web节点整个tmp目录同步至backup节点/data/nginx目录:
# rsync -avz --password-file=/etc/.rsync.passwd /tmp rsync://[email protected]/nginx
备注:无需在命令中写明/data/nginx目录,已在[nginx]模块中定义了path参数,且“用户名@地址::模块名”和“rsync://用户名@地址/模块名”两种表示方式均可
13、web节点编写同步脚本:
# mkdir -pv /scripts
# cd /scripts
# vim rsync_backup.sh
#!/bin/bash
SRCDIR=/usr/share/nginx/html
DSTIP="192.168.0.121"
MODULENAME=nginx
USERNAME=ryuser
PWDFILE=/etc/.rsync.passwd
EXCDIR=/scripts/rsync_exclude.txt
/usr/local/inotify-tools/bin/inotifywait -mrq --timefmt '%F %T' --format '%T %w%f %e' -e attrib,create,delete,modify,move $SRCDIR | while true
do
for ip in $DSTIP
do
/usr/local/rsync/bin/rsync -azL --delete --exclude-from=$EXCDIR --password-file=$PWDFILE $SRCDIR/ $USERNAME@$ip::$MODULENAME
done
done
# chmod +x rsync_backup.sh
# touch rsync_exclude.txt
# nohup ./rsync_backup.sh &
# jobs
备注:
(1)DSTIP中如果包含多个目标IP,用空格分隔;
(2)EXCDIR表示不需要同步的目录,如果有多个,每一行写一个目录,使用相对于同步模块的路径,比如不需要同步/usr/share/nginx/html目录下的a目录,还有b目录下的c目录,/scripts/rsync_exclude.txt文件可写成:
a/
b/c/
(3)此处/scripts/rsync_exclude.txt文件内容为空;
(4)jobs命令查看系统中正在执行的任务列表和任务状态,终止备份脚本可使用命令# pkill rsync。
14、测试同步:
(1)创建文件:
web节点创建文件,并修改文件属性:
# cd /usr/share/nginx/html
# echo "error" > error.html
# chmod 777 error.html
backup节点查看:
(2)删除文件:
web节点删除文件:
# rm -rf 404.html 50x.html nginx-logo.png poweredby.png
backup节点查看:
15、web节点配置同步脚本开机启动:
# echo "nohup /scripts/rsync_backup.sh &" >> /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local