一、基础知识
1 、 Sync : 利用 sync 算法进行数据同步的工具,在多平台下使用。可以跟新整个目录和文件系统备份,可以选择性
保留符号链接,不需要特殊的权限要求。
2 、 ssh 工具中 scp 与 sync 有什么差距: scp 传输过程中使用的是单线程。而 sync 使用的是多线程
3 、 Rsync 命令常用用法
基本格式: rsync 【选项】 原始位置 目标位置
常用选项:
-a :归档模式,递归保留对象属性,等同于 -rlptgoD
-v :显示同步过程的详细信息( verbose )信息
-z :在传输文件是进行压缩( compress )
-H :保留硬链接文件
-A :保留 ACL 属性信息
--delete :删除目标位置有而原始位置没有的文件
-r :递归模式,包含目录和子目录中所有文件
-l :对于符号连接文件仍然复制为符号连接文件
-p :保留文件的权限标记
-t :保留文件的时间标记
-g :保留文件的属主标记(仅超级用户使用)
-o :保留文件属主标记(仅超级用户使用)
-D :保留设备文件及其他特殊文件
三、 同步实验
1 、时间同步服务器( C/S )
a 、服务器端
yum -y install ntp 安装时间同步服务器 ntp
vim /etc/ntp.conf 修改 ntp 服务器配置文件
# server 0.rhel.pool.ntp.org iburst 注释
# server 1.rhel.pool.ntp.org iburst
# server 2.rhel.pool.ntp.org iburst
# server 3.rhel.pool.ntp.org iburst
restrict 192.168.66.0 mask 255.255.255.0 nomodify notrap 标识为 192.168.66.0 网段提供服务, nomodify 标识禁止修改
服务器时间, notrap 标识禁止抓包,直接添加
server 127.127.1.0 标识时间服务器是本机
fudge 127.127.1.0 stratum 10 标识时间服务器的级别, 0-15 级别一半设为中间 10
service ntpd start 开启 ntp 服务以及开机自启动
chkconfig ntpd on
ntpq -p 查看时间服务器状态
ntpstat 查看时间服务器工作状态
b 、客户端
yum -y install ntp 安装 ntp
vim /etc/ntp.conf 修改配置文件
# server 0.rhel.pool.ntp.org iburst
# server 1.rhel.pool.ntp.org iburst
# server 2.rhel.pool.ntp.org iburst
# server 3.rhel.pool.ntp.org iburst
server 192.168.66.11
restrict 192.168.66.11 nomodify notrap noquery
server 127.127.1.0
fudge 127.127.1.0 stratum 11
service ntpd start chkconfig ntpd on 开启服务
ntpdate -u 192.168.66.11 主动从时间服务器同步时间

2 、基于 SSH 验证的同步源
a 、密钥对认证
ssh-keygen -t rsa
ssh-copy-id root@ 对方 IP 地址
b 、下载: rsync -avz root@ 服务器 IP:/ 对方文件位置 / 保存位置
c 、上传: rsync -avz 本地文件 root@ 服务器 IP:/ 保存位置
3 、基于 RSYNC 的同步源
a 、服务端
mkdir -p /server/rsync
cd ! #
touch rsync.txt
vim /etc/rsyncd.conf 创建配置文件,直接生成,原本没有
use chroot = yes 进入宿主目录
address = 192.168.66.11 申明服务器 IP 地址
port 873 申明端口号,默认就是 873
log file = /var/log/rsync.log 指定日志文件位置
pid file = /var/syncd.pid 指定 PID 文件位置
[pub] 申明目录
comment = rsync server
path = /server/rsync 服务器目录
read only = yes 只读
dont compress = .gz .tgz *.bz2 申明哪些文件不进行压缩,已经压缩文件不进行压缩
auth users = aaa 指定在使用 sync 的用户名密码,虚拟的不真实存在
secrets file = /etc/rsyncd_users.db 存放虚拟用户密码文件
vim /etc/rsyncd_users.db 创建验证文件
aaa:123456
chmod 600 /etc/rsyncd_user.db 给予验证文件 600 权限 * 必须
rsync --daemon 开启服务
netstat -anpt | grep :873 查看端口
b 、客户端
mkdir -p /client/rsync
cd ! #
export RSYNC_PASSWORD=123456 申明全局变量, sync 验证时先搜寻变量在输入密码
rsync -avz 服务器虚拟用户名 @ 服务器地址 :: 共享名 保存目录
--delete 完全相同与服务器,删除本地不同的
example : rsync -avz aaa@192.168.66.11::pub /client/rsync

4 、实时同步 Rsync+Inotify 单向
a 、服务器端
①、安装 inotifi
tar -zxf inotify-tools-3.14.tar.gz 解包
./configure
make make install
②、优化,调整内核参数(可以不添加,数据大最好优化)
vim /etc/sysctl.conf 末尾添加
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
说明:此参数为红帽 6 版本的,其它版本需查询,版本不同参数不同
sysctl -p 刷新内核参数
③、开启监控(测试)
inotifywait -mrq -e create,delete /client/ssh/ /client/ssh/ 为监控目录
④、脚本连接
vim 1.sh
# !/bin/bash
# a="inotifywait -mrq -e create,delete / 本地目录 "
# b="rsync -avz --delete / 本地目录 对方用户 @ 对方 IP 地址 : 对方目录 "
# # a | while read DIRECTORY EVENT FILE
# do
# # b
# done
⑤、启动脚本
chmod 777 1.sh
./1.sh &
5 、实时同步 Unison + Inotify 双向
a 、服务器和客户端都需配置秘钥对
ssh-keygen -t rsa
ssh-copy-id root@192.168.66.11
说明:基于 ssh 实现不需要密码同步方式
b 、安装 ocaml unison inotify
①、安装 inotify
tar -zxf inotify-tools-3.14.tar.gz
./configure
make && make install
vim /etc/sysctl.conf 末尾添加
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
sysctl -p 刷新内核参数
②、安装 ocalml
tar -zxf ocaml-3.10.1.tar.gz
cd ocaml-3.10.1
./configure
make world opt
make install
③、安装 unison
tar -zxf unison-2.13.16.tar.gz
cd unison-2.13.16
make UISTYLE=text THREADS=true static=true
cp unison /usr/local/bin/
④、创建文件夹
mkdir xxx
setfacl -m u:root:rwx /wangyang/
⑤、配置脚本
# !/bin/bash
a="inotifywait -mrq -e create,delete / 本地目录 "
b="/usr/local/bin/unison -batch /server1/ ssh://root@10.10.10.11//server2"
# a | while read DIRECTORY EVENTS FILE
do
# b
done