1、 rsync
全称:remote sync 远程同步
服务器之间常常要保持些文件或目录的一致,比如一些大的软件下载网站,它们通常使用 多台服务器来提供下载服务。当一台服务器上的文件更新后,其它的服务器也需要更新,而且 在更新的时候应该是只对新增或是修改过的文件进行更新,否则会造成网络带宽和时间的浪费。rsync就是能有效的保持文件及目录的一致的优秀软件。
特点:rsync在同步文件的同时,可以保持原来文件的权限,时间戳,软硬连接等附加等信息, 同时rsync可以通过使用ssh方式传输文件,保证传输安全性
#rsync命令工作模式:
#第一种:shell模式,也称作本地模式
#第二种:远程shell模式,此时可以利用ssh协议承载其数据传输过程
#第三种:列表模式,其工作方式与ls相似,仅列出源的内容;#rsync -nv
#第四种:服务器模式,此时,rsync可以工作为守护进程,能够接收客服端的数据传输请求;在使用时,可以在客户端使用rsync命令把文件发送给守护进程,也可以向服务器请求获取文件。
#rsync 命令选项
# -n: 在不确定命令是否能按意愿执行时,务必要事先测试;
# -n可以完成此功能;
# -v: --verbose,详细输出模式
# -q: --quiet,静默模式
# -c: --checksum,开启校验功能,强制对文件传输进行校验
# -r: --recursive,递归复制;
# -a: --archives,归档,保留文件的原有属性
# -p: --perms 保留文件的权限
# -t: --times 保留文件的时间戳
# -l: --links 保留文件的符号链接
# -g: --group 保留文件的属组
# -o: --owner 保留文件的属主
# -D: --devices 保留设备文件
# (-a 相当于其他属性的总和 即-p -t -l -g -o -d...)
# -e ssh: 表示使用ssh协议作承载
# -z: 对文件压缩后传输
# --progress:显示进度条
# --stats: 显示如何执行压缩和传输
#注意:
#rsync命令使用中,如果源参数的末尾有斜线,就会复制指定目录的内容,而不复#制目录本身;没有斜线,则会复制目录本身;目标参数末尾的斜线没有作用;
#如:
#rsync -r /data /backup/ 将data整个目录同步到/backup中
#rsync -r /data /backup/ 将data目录中所有内容同步到/backup中
2、 rsync 实现服务器间同步
规划如下:
2.1 在MySQL服务器上配置rsync服务
#rsync 脚本:/etc/xinetd.d/rsync
#rsync 配置文件:/etc/rsyncd.conf
#rsync 帮助命令:man rsyncd.conf
(1)编辑rsync配置文件
#vim /etc/rsyncd.conf
#Global Settings 全局设置,描述信息
uid = nobody 运行rsync进程的用户
gid = nobody 运行rsync进程的组
use chroot = no 是否将用户禁锢在其家目录
max connections = 5 数据同步时最大连接数
strict modes = false 严格模式:建议设置为false,否则验证用户时容易出错
pid file = /var/run/rsyncd.pid 进程文件目录
log file = /var/log/rsyncd.log 日志文件目录
[mydata] 共享目录名称
path = /tmp 需要备份的文件存放位置
ignore errors = yes 数据同步期间忽略I/O错误
read only = no 只读,如果只读将无法上传数据
write only = no 只写,如果只写将无法下载数据
hosts allow = 172.16.0.0/16 允许的主机或者网段
hosts deny = * 拒绝的主机或者网段
list = false 不列出文件
uid = root 运行进程的用户
gid = root 运行进程的组
auth users = myuser 验证用户
secrets file = /etc/rsync.passwd 用户密码文件
(2)创建用户密码文件,同时将文件放到备份服务器中
#vim /etc/rsync.passwd
#设置账户密码
#如 myuser:mypass
#赋予文件权限
#chmod 600 /etc/rsync.passwd 建议只有管理员有权限
#rsync /etc/rsync.passwd root@172.16.251.226:/etc -p 文件放到备份服务器上一份,并保持两者权限相同 -p
(3)备份服务器测试-->linux server 172.16.251.226
查看MySQL服务器共享目录中文件
将mysql服务器上的mydata中的数据同步到当前服务器/backup目录下
#rsync -r myuser@172.16.251.241::mysql /backup 递归同步到本地/backup目录
#ll /backup 查看/backup目录文件
备份服务器做周期性任务计划
#注意:在备份服务器同时存放一份用户密码文件,是为了做数据同步时无需再输入账户密码;因此基于此我们可以再做一个周期性任务计划实现运维自动化
#rsync -r --password-file=/etc/rsync.passwd myuser@172.16.251.241::mydata /backup
方法①
#crontab -e
#30 2 * * * rsync -r --password-file=/etc/rsynac.passwd myuser@172.16.251.241:mydata /backup
方法②
#vim rsync.sh 建脚本
#脚本内容
#!/bin/bash
echo "start"
rsync -r --password-file=/etc/rsync.passwd myuser@172.16.251.241::mydata /backup &> /dev/null
echo "finished"
#crontab -e 建周期性任务假话
#30 2 * * * .rsync.bash 凌晨2:30 进行一次数据同步,通过执行脚本实现
(4)windows server 做数据同步 172.168.254.84
官网下载绿色版cwRsync https://www.itefix.no/i2/content/cwrsync-free-edition
#下载文件后首先在文件夹中创建rsync.passwd文件,内容为密码mypass
#创建批处理文件a.bat
#文件内容rsync -r myuser@172.16.251.241::mydata /cygdrive/f/test --password-file=rsync.passwd
#手动同步
#cwRsync 存放在本地路径 C:\Users\jun\Desktop\3.1.0
#运行->cmd
#cd C:\Users\jun\Desktop\3.1.0
#rsync -r myuser@172.16.251.241::mydata /cygdrive/f/test --password-file=rsync.passwd
将数据同步到本地F://test文件夹中
#如果想做周期性计划 #则找到任务计划程序,将自动同步的脚本定时执行即可,关于windows配置此处略
技术有限,期待指点。