Linux下文件同步、备份神器之-------rsync

   对于运维人员,数据备份是日常重要而又必须做的工作,选择一种好的备份软件效率会大大提升。rsync 就是一款功能强大,高效,安全,速度快的文件增量传输工具。

   一 、什么是rync ?

     1. rsync ---- remote synchronize  ,是一款实现远程同步功能的软件;

     2. rsync使用“Rsync算法来同步文件,该算法只传送两个文件的不同部分,因此速度相当快;

     3. 同步文件的同时,可以保持原来文件的权限、时间 和目录结构;

     4. 对于多个文件来说,内部流水线减少文件等待的延时;

   5. rsync默认监听TCP 873端口,通过远程shell如rsh和ssh复制文件。同时要求必须在远程和本地系统上都安装sync.


    二、  Rsync 安装

1.  下载Rysnc

  目前Llinux各大发行版操作系统都已安装rsync ,可以通过rysnc --version查看当前版本,需要安装最新版本的,可到 rysnc 的官方网站:http://rsync.samba.org/ 下载最新的版本,编译安装。

Linux下文件同步、备份神器之-------rsync_第1张图片

2.   安装Rsync

#yum install -y  rsync         ####yum 安装

编译安装:

#wget  https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz
#tar -zxvf   rsync-3.1.3.tar.gz
#cd rysnc-3.1.3
#./configure --prefix=/usr/local/rsync

#make && make install

rsync 安装完成,默认在/usr/local/rsync/bin下,配置后可以备份或者传输远程服务器数据。

注意:编译安装前得先安装gcc编译工具。


三、 配置 Rsync

1. 配置文件

rsync的主要有以下三个配置文件:

      rsyncd.conf      ----主配置文件,需要手动生成

      rsyncd.secrets  ----密码文件

      rsyncd.motd     ----rysnc服务器信息


2.  rsync.conf 配置

例如:我们要备份服务器上的 /home/backup 目录,同时要把 /home 下的 file1 和 file2 目录排除在外

#vim /etc/rsyncd.conf

  rsyncd.conf     (rsync服务的主要配置文件,它控制rsync服务的各种属性,下面给出一个
rsyncd.conf文件的例子:
  1.   #先定义整体变量
  2.   secrets file = /etc/rsyncd.secrets
  3.   motd file = /etc/rsyncd.motd
  4.   read only = yes
  5.   list = yes
  6.   #uid = nobody
  7.   #gid = nobody
  8.     uid = test         #
  9.     gid = test         #
  10.   hosts allow = 172.25.0.110    #哪些电脑可以访问rsync服务
  11.   hosts deny = 172.25.0.0/24    #哪些电脑不可以访问rsync服务
  12.   max connections = 2
  13.   log file = /var/log/rsyncd.log
  14.   pid file = /var/run/rsyncd.pid
  15.   lock file = /var/run/rsync.lock
  16.   
  17.     #再定义要rsync的目录
  18.   [backup]
  19.   path = /home/backup
  20.     list=yes
  21.     ignore errors
  22.     auth users = test,backup
  23.     comment = This is taranfly's Blog
  24.     exclude = file1/  file2/ 

配置文件详细说明:

注释:

 uid = nobody

进行同步或者备份的用户,nobody 为任何用户

gid = nobody 

进行备份的组,nobody为任意组

use chroot = no

如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true.但是一般不需要,选择no或false

list = no

不允许列清单

max connections = 10 

最大连接数

timeout = 600 

覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端。

pidfile = /var/run/rsyncd.pid  

pid文件的存放位置

lock file = /var/run/rsync.lock  

锁文件的存放位置

log file = /var/log/rsyncd.log   

日志文件的存放位置

[data]  

这里是认证模块名,即跟samba语法一样,是对外公布的名字

path = /home/backup

这里是参与同步的目录

ignore errors  

可以忽略一些无关的IO错误

read only = no

允许可读可写

list = no

不允许列清单

hosts allow = 192.168.1.0/255.255.255.0

这里可以指定单个IP,也可以指定整个网段,能提高安全性。格式是ip 与ip 之间、ip和网段之间、网段和网段之间要用空格隔开

auth users = test 

认证的用户名

secrets file = /etc/rsyncd.password  

密码文件存放地址

*****************************************************************************************************************

注意: 

1、[backup]  认证模块名和 path = /www/backup/ 参与同步的目录

这里的path 大家要记好了,这里不要随便的一设置就直接完事,要知道这里是认证模块的,以后从客户机备份的数据会存储在这里。

2、auth users = redhat 认证的用户名 这个名字是服务器端实实在在存在用户,大家不要直接跟步骤走却忽略了这点。如果服务器端少了这个的话我估计你的数据同步就实现不了,大家要谨记。

*****************************************************************************************************************

3. 定义密码文件 :/etc/rsyncd.secrets
1. rsyncd.secrets是存储rsync服务的用户名和密码的,它是一个明文的文本文件,权限设为600,只有属主可以读写
密码文件格式为:user:password 文件的属性必须


#vim /etc/rsyncd.secrets
test:123456

2.  添加属主和权限

#chown root:root /etc/rsyncd/rsyncd.secrets
#chmod 600 /etc/rsyncd/rsyncd.secrets
4.  定义 rsyncd.motd 文件

rsyncd.motd主要定义用户登录rsync服务的欢迎信息,可以自己根据需求定义,跟FTP登录界面一样如:

# vi /etc/rsyncd.motd
*****************************************************  
 Welcome to use the taranfly's rsync services!

*****************************************************

5.  启动rsync服务

#/usr/bin/rsync  --daemon
#netstat   -lntup |grep  rsync
#ps  -ef |grep rsync |grep -v grep
6.  设置开机自启动

#echo "/usr/bin/rsync --deamon">>/etc/rc.local
#cat  /etc/rc.local

注: –daemon 是让rsync 以服务器模式运行

7.   设置防火墙

默认情况下防火墙一般可以关闭,不然会阻止873端口,导致rsync服务无法起来。

#iptable -L    #查看873端口是否打开
#service  iptables stop
若要开启iptables ,允许873端口访问如下:
#iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
#iptables -L     #确认873端口是否打开



四、  rsync 命令格式

rsync 命令格式:
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
rsync [OPTION]... [USER@]HOST:SRC DEST
sync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... [USER@]HOST::SRC [DEST]
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
常用的方式:

1.   备份本地文件 ==cp
#rsync -avzP   /home  /backup        ==相当于cp     
2.   同步本地到远程主机

#rsync -avzP /home/backup/  [email protected]:192.168.1.4:/share/rsysnctest/

3.   远程同步到本地

# rsync -avz [email protected]:192.168.1.4:/share/rsysnctest/ /home/aloft/

4.  找出文件直接的不同

# rsync -avz [email protected]:192.168.1.4:/share/rsysnctest/ /home/aloft/

5.  与contab 结合,定时备份

创建定时备份任务,A主机上将要备份/home/data 文件同步到B主机(172.25.0.150) 下/backup目录。

每天的晚上23:30 执行备份任务 

vim AtoBbacku.sh
#!/bin/bash
rsync -avzP  --delete  --password-file=rsyncd.secrets /home/data  [email protected]::/backup
chmod 755 AtoBbacku.sh
crontab -e
30 23 * * *   sh -x /AtoBbacku.sh


rsync 常用参数:

-a, --archive 归档模式,等于-rlptgoD;   #最常用的  一般直接 -avzP

-r, --recursive 递归模式;

-l 保持符号连接;

-p 保持文件原有权限;

-t 保持文件原有修改时间;

-g 保持文件原有用户组;

-o 保持文件原有属主;

-D -devices -specials,保持块设备文件和特殊文件;

-I 强制扫描,放弃“quick check”策略(quick check策略,通过查看文件的时间戳和文件大小,先排除一批认为相同的文件[rsync不会对文件夹本身做“quick check”]);

-z, --compress 压缩,默认的压缩算法和gzip一样;

-v, --verbose 显示进度详细信息;

-q, --quiet 精简输出模式;

-R, --relative 保持全路径;

--progress  显示传输进度(百分百);  等同于 -P

--delete 本地删除某一文件,远程也同步的删除该文件,保持严格的一致(不加该参数,则表示只增不减);

--exclude="*.tmp" 排除某些文件;

--exclude-from=FILE 排除FILE中指定模式的文件;

--port=PORT 指定其他的rsync服务端口;


你可能感兴趣的:(Linux)