rsync简介

rsync,remote synchronize,顾名思义,它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。

rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。

rsync 包括如下的一些特性:

能更新整个目录和树和文件系统;
有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
对于安装来说,无任何特殊权限要求;
对于多个文件来说,内部流水线减少文件等待的延时;
能用rsh、ssh 或直接端口做为传输入端口;
支持匿名rsync 同步文件,是理想的镜像工具。

更多用法参考:https://blog.csdn.net/miss1181248983/article/details/80715498 ,这里就不多赘述。

安装rsync

实现数据备份同步,需要两台机器,一台作为rsync服务器,一台作为rsync客户端。这里,rsync服务器的IP地址为172.16.1.41,rsync客户端的IP地址为172.16.1.31。

CentOS系统默认没有rsync命令,所以需要安装,且两台机器都要安装。

[root@rsync ~]# yum install -y rsync            //服务器安装 rsync

[root@nfs ~]# yum install -y rsync            //客户端安装 rsync

关闭selinux和防火墙,防止后面有问题

[root@rsync ~]# systemctl stop firewalld[root@rsync ~]# systemctl disable firewalld[root@rsync ~]# vim /etc/sysconfig/selinux          //做以下修改,然后重启SELINUX=disabled

[root@nfs ~]# systemctl stop firewalld[root@nfs ~]# systemctl disable firewalld[root@nfs ~]# vim /etc/sysconfig/selinux          //做以下修改,然后重启SELINUX=disabled

rsync同步备份

服务端配置

  • 配置rsync的配置文件 /etc/rsyncd.conf:
[root@rsync ~]# vim /etc/rsyncd.conf            //写入下面内容uid = root gid = root use chroot = no max connections = 4 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid [backup]           //自定义模块名为backup        path = /backup/        ignore errors        read only = false        list = true        hosts allow = 172.16.1.0/24        auth users = rsync_backup        secrets file = /etc/rsync.password

上面各种参数的含义:

 port:指定在哪个端口启动rsyncd服务,默认是873端口。 log file:指定日志文件。 pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等进程管理操作。 address:指定启动rsyncd服务的IP。假如你的机器有多个IP,就可以指定由其中一个启动rsyncd服务,如果不指定该参数,默认是在全部IP上启动。 []:指定模块名,里面内容自定义。 path:指定数据存放的路径。 use chroot true|false:表示在传输文件前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true,如果你的数据当中有软连接文件,建议你设置成false。 max connections:指定最大的连接数,默认是0,即没有限制。 read only ture|false:如果为true,则不能上传到该模块指定的路径下。 list:表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐藏。 uid/gid:指定传输文件时以哪个用户/组的身份传输。 auth users:指定传输时要使用的用户名。 secrets file:指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意该密码文件的权限一定要是600。格式:用户名:密码 hosts allow:表示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用空格隔开。

  • 创建备份目录:
[root@rsync ~]# mkdir /backup[root@rsync ~]# ls -ld /backup/drwxr-xr-x. 2 root root 30 8月   9 12:39 /backup/

  • 编辑 secrets file 保存后并要赋予600权限,如果权限不对,无法完成同步:
[root@rsync ~]# echo "rsync_backup:grewan" > /etc/rsync.password[root@rsync ~]# chmod 600 /etc/rsync.password

  • 启动rsync服务:
[root@rsync ~]# rsync --daemon --config=/etc/rsyncd.conf [root@rsync ~]# ps aux |grep rsyncdroot      10270  0.0  0.0 114740   552 ?        Ss   12:09   0:00 rsync --daemon --config=/etc/rsyncd.conf[root@rsync ~]# netstat -an |grep 873           tcp        0      0 172.16.1.41:873         0.0.0.0:*               LISTEN           //已经在监听873端口[root@rsync ~]# cat /var/log/rsync.log 2018/08/09 16:08:18 [897] rsyncd version 3.1.2 starting, listening on port 873[root@rsync ~]# vim /etc/rc.d/rc.local           //开机启动rsync,最后面添加下面一行/usr/bin/rsync --daemon --config=/etc/rsyncd.conf

客户端配置

  • 编辑一个密码文件:
[root@nfs ~]# echo "grewan" > /etc/rsync.password      //该密码就是服务端rsync_backup用户的密码[root@nfs ~]# chmod 600 /etc/rsync.password

如果服务端不设置auth users,那么默认就是以root用户身份来备份,在传输时候可以加上指定用户,也可以不加

  • 测试数据备份:
[root@nfs ~]# mkdir /backup[root@nfs ~]# touch /backup/123.txt /backup/1 /backup/222.sh[root@nfs ~]# rsync -avL /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password          //推数据到服务器sending incremental file list./1123.txt222.shsent 221 bytes  received 76 bytes  594.00 bytes/sectotal size is 0  speedup is 0.00

数据备份成功

数据备份及恢复

在生产环境下,对于生产服务器的数据肯定是需要备份,我们可以在生产型服务器上配置好rsync 服务器,让这台备份服务器每隔一段时间同步备份一次服务器上的数据;并且让每个备份都是完整备份。这种备份相当于每天为服务器的数据做一个镜像,当生产型服务器发生事故时,我们可以轻松恢复数 据,能把数据损失降到最低。

假如现在要实现这个功能:“当数据丢失在2小时内恢复所有数据”,那就可以每隔2小时执行一次备份,可以通过脚本来实现,并且脚本可以定期删掉超过当前日期一段时间的备份,防止磁盘空间不足。

定期执行任务需要编辑crontab:

[root@nfs ~]# crontab -e* */2 * * *  rsync -avL --delete /  rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

表示每隔2小时执行一次备份,并且是备份根目录(当然备份根目录有些不太好,实际情况下是针对重要数据进行备份,这里只是举个例子)

如果数据丢失,那我们也可以进行恢复,通过脚本判断数据丢失,结果为真则向rsync服务器拉数据回来。


更多资料参考:

如何使用RSYNC搭建备份服务器

RSync实现文件备份同步

RSync实现文件同步备份配置详解

©著作权归作者所有:来自51CTO博客作者80民工的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. MySQL闪回工具--MyFlash
  2. 备份系统建设中的四个误区和六个错误
  3. 备份软件老矣?存储新风口——超融合第二存储来了
  4. Linux 下数据库定时备份
  5. MySQL备份与恢复-innobackupex
  6. MySQL备份与恢复-mysqldump备份与恢复
  7. MySQL测试工具之-tpcc
  8. mysql备份与恢复-xtracebackup
  9. MySQL备份与恢复-mydumper

随机推荐

  1. javascript设计模式详解之命令模式
  2. MVC jquery。无法获取未定义或空引用的属
  3. JavaScript相当于Ruby的字符串#扫描
  4. HTML/JS作为本地SQLite数据库的接口
  5. 如何在Javascript中重新抛出异常,但保留堆
  6. js点击button按钮跳转到另一个新页面
  7. Emberjs应用程序加载除Index之外的所有路
  8. JS DOM 编程艺术(第2版)读书笔记 第5章
  9. 从服务器(任何服务器)获取当前日期和时间。
  10. 前端开发:从哪里开始?