1)如图所示,搭建网络,配置地址
2)在1.10服务器上配置为服务端,修改rsync的配置文件/etc/rsyncd.conf,并启动rsync服务程序
// 以下所有都在Linux“服务端”配置
// 修改 /etc/rsyncd.conf 配置文件
$ vim /etc/rsyncd.conf
// 配置内容如下
uid = nobody
gid = nobody
use chroot = yes
address = 192.168.1.10
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.1.0/24
[wwwroot]
path = /var/www/html
comment = shuo_ming
read only = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper
secrets file = /etc/rsyncd_users.db
// 为备份账户创建数据文件
$ vim /etc/rsyncd_users.db
// 添加 用户名:密码 (这个用户与本机用户 无关)
backuper:123
或
$ echo backuper:123 > /etc/rsyncd_users.db
$ chmod 600 /etc/rsyncd_users.db
// 创建rsync源目录
$ mkdir -p /var/www/html
// 启动rsync 服务
$ rsync --daemon
//停止rsync服务
$ kill $(cat /var/run/rsyncd.pid)
// 查看rsync 服务
$ netstat -anpt | grep rsync
3)在1.20上使用rsync命令验证是否能够从服务端(/var/www/html)下载文件到客户机端(/myweb)
// 在“服务器”端创建文件 验证测试
$ cd /var/www/html
$ touch 1 2 3
$ ls
// Linux “客户机”配置
// 客户端 执行备份命令 验证
$ rsync -avz backuper@192.168.1.10::wwwroot /root
//验证 查看 root 目录
$ ls /root
// Linux “客户机”配置
// 客户端 执行备份命令 验证
$ mkdir /myweb
$ rsync -avz backuper@192.168.1.10::wwwroot /myweb
//验证 查看 /myweb 目录
$ ls /myweb
4)在1.20上实现每天晚上22:00对服务器的网站目录(/var/www/html)做一次同步
// Linux “客户机”配置
// 创建密码文件,方便后面操作
$ echo 123 > /etc/server.pass
$ chmod 600 /etc/server.pass
// Linux “客户机”配置
// 创建周期性的计划任务(每天晚上十点,将服务器的配置wwwroot这个共享模块,备份到客户端的 /myweb 目录)
$ crontab -e
//添加以下内容
00 22 * * * /usr/bin/rsync -avz --delete --password-file=/etc/server.pass backuper@192.168.1.10::wwwroot /myweb
5)在1.20上配置rsync+inotify实时同步。通过编写脚本来实现,客户机能够实时上传文件到服务端。
注意:需要在客户端安装inotify软件
// Linux “客户机”配置
// 调整 inotify 内核参数
$ vim /etc/sysctl.conf
// 添加
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
// Linux “客户机”配置
// 查看
$ sysctl -p
// Linux “客户机”配置
// 安装 inotify-tools ,安装源码包
$ mount /dev/cdrom /media
$ tar zxf /media/inotify-tools-3.14.tar.gz -C /usr/src
$ cd /usr/src/inotify-tools-3.14
$ ./configure && make && make install
$ eject
// Linux “客户机”配置
// 触发式同步脚本
$ vim /opt/inotify_rsync.sh
// 添加
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.1.10::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
$RSYNC_CMD
done
// Linux “客户端”配置
// 创建客户端备份 目录
$ mkdir -p /var/www/html
// Linux “服务器”配置
// 修改 /var/www/html 目录权限,使“other”有写入权
$ chmod 777 /var/www/html
// Linux “服务器”配置
// 配置服务端 允许客户端 上传(取消 只读 权限)
$ vim /etc/rsyncd.conf
// 修改 read only 这个配置项为 no
[wwwroot]
path = /var/www/html
comment = shuo_ming
read only = no
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper
secrets file = /etc/rsyncd_users.db
// 测试
// 客户机:开两个终端
// 一个终端执行脚本
$ sh /opt/inotify_rsync.sh
// 一个终端在 /var/www/html 目录创建、删除文件测试
$ touch /var/www/html/test_01
// 实时同步 测试结果应为:
// Linux客户端在执行脚本的情况下,在 /var/www/html 目录创建的 test_01 文件
// 会立刻同步到 服务器端