Rsync介绍及配置

一、什么是rsync

rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。

1.1rsync 包括如下的一些特性:

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

二 工作场景

2.1 两台服务器之间数据拷贝

2.2 定时备份

三 三种模式

3.1 第1种方式

Local: rsync [OPTION...] SRC... [DEST]

rsync -avz/etc/hosts /tmp/                这种情况相当于cp

[[email protected]~]# rsync -avz --delete /dev/null/ /tmp/       我有点你必须有,我没有的你必须没有,相当于rm 命令

sending incremental file list

null

sent 34 bytes  received 15 bytes  98.00 bytes/sec

total size is 0  speedup is 0.00

[[[email protected] ~]# ll /tmp/

total 0

3.2 第2种方式

Access via remote shell:

Pull:rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]

Push:rsync [OPTION...] SRC... [[email protected]]HOST:DEST

[[email protected] ~]# ll /tmp/

total 0

-rw-------. 1 root root 0 Feb 21 17:28yum.log

[[email protected]~]# rsync -avzP -e ‘ssh -p22‘ /tmp/ [email protected]:/tmp        把本地的推送到远端/tmp目录下,注意:如果/tmp后面没有/ 那么推送到只是tmp目录下面的内容,如果加上/变成/tmp/ 那么这个时候的推送就包含整个tmp目录了

The authenticity of host ‘10.0.0.100(10.0.0.100)‘ can‘t be established.

RSA key fingerprint isdb:ce:a8:5a:d6:2b:23:5f:15:70:68:ce:84:38:ef:ef.

Are you sureyou want to continue connecting (yes/no)? y          这里是确认

Please type‘yes‘ or ‘no‘: yes           这里要求输入远端账号的密码

Warning: Permanently added ‘10.0.0.100‘(RSA) to the list of known hosts.

reverse mapping checking getaddrinfo forbogon [10.0.0.100] failed - POSSIBLE BREAK-IN ATTEMPT!

[email protected]‘s password:

sending incremental file list

./

yum.log

0 100%    0.00kB/s   0:00:00 (xfer#1, to-check=1/3)

.ICE-unix/

sent 114 bytes  received 38 bytes  16.00 bytes/sec

total size is 0  speedup is 0.00

把远端的数据拉回本地

[[email protected] ~]#rsync -avzP -e ‘ssh -p 22‘[email protected]:/tmp/ /tmp/           从远端拉回来

reverse mapping checking getaddrinfo forbogon [10.0.0.100] failed - POSSIBLE BREAK-IN ATTEMPT!

[email protected]‘s password:

receiving incremental file list

./

pull.txt

5 100%    4.88kB/s   0:00:00 (xfer#1, to-check=2/4)

sent 34 bytes  received 146 bytes  51.43 bytes/sec

total size is 5  speedup is 0.03

[[email protected] ~]# ll /tmp/

total 4

-rw-r--r--. 1 root root 5 Mar  3 03:58 pull.txt

-rw-------. 1 root root 0 Feb 21 17:28yum.log

[[email protected] ~]# cat /pull.txt

cat: /pull.txt: No such file ordirectory

[[email protected] ~]# cat /tmp/pull.txt

Pull

3.3 第3 种方式

Access via rsync daemon:

Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]

rsync [OPTION...]rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]

Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST

rsync [OPTION...] SRC...rsync://[[email protected]]HOST[:PORT]/DEST

四 客户端常用参数

-v, --verbose 详细模式输出

-q, --quiet 精简输出模式 
-c, --checksum 打开校验开关,强制对文件传输进行校验 
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD 
-r, --recursive 对子目录以递归模式处理 
-R, --relative 使用相对路径信息
rsync foo/bar/foo.c remote:/tmp/
Rsync 参数在/tmp目录下创建foo.c文件,而如果使用-R参数:
rsync -R foo/bar/foo.c remote:/tmp/
Rsync 参数会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 
--backup-dir 将备份文件(如~filename)存放在在目录下。 
-suffix=SUFFIX 定义备份文件前缀 
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件) 
-l, --links 保留软链结 
-L, --copy-links 想对待常规文件一样处理软链结 
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结 
--safe-links 忽略指向SRC路径目录树以外的链结 
-H, --hard-links 保留硬链结 
-p,--perms 保持文件权限 
-o, --owner 保持文件属主信息 
-g, --group 保持文件属组信息 
-D, --devices 保持设备文件信息 
-t,--times 保持文件时间信息 
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间 
-n, --dry-run现实哪些文件将被传输 
-W, --whole-file 拷贝文件,不进行增量检测 
-x, --one-file-system 不要跨越文件系统边界 
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节 
-e, --rsh=COMMAND 指定替代rsh的shell程序 
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息 
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件 
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件 
--delete删除那些DST中SRC没有的文件 
--delete-excluded 同样删除接收端那些被该选项指定排除的文件 
--delete-after 传输结束以后再删除 
--ignore-errors 及时出现IO错误也进行删除 
--max-delete=NUM 最多删除NUM个文件 
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输 
--force 强制删除目录,即使不为空 
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名 
--timeout=TIME IP超时时间,单位为秒 
-I, --ignore-times 不跳过那些有同样的时间和长度的文件 
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间 
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0 
-T --temp-dir=DIR 在DIR中创建临时文件 
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份 
-P 等同于--partial 
--progress 显示备份过程 
-z, --compress 对备份的文件在传输时进行压缩处理 
--exclude=PATTERN指定排除不需要传输的文件模式 
--include=PATTERN 指定不排除而需要传输的文件模式 
--exclude-from=FILE 排除FILE中指定模式的文件 
--include-from=FILE 不排除FILE指定模式匹配的文件 
--version 打印版本信息 
--address 绑定到特定的地址 
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件 
--port=PORT 指定其他的rsync服务端口 
--blocking-io 对远程shell使用阻塞IO 
-stats 给出某些文件的传输状态 
--progress 在传输时现实传输过程 
--log-format=FORMAT 指定日志文件格式 
--password-file=FILE 从FILE中得到密码 
--bwlimit=KBPS 限制I/O带宽,KBytes per second 
-h, --help 显示帮助信息

五 rsync配置

5.1 服务器配置

5.1.1建立配置文件

在/etc/文件目录下创建一个rsyncd.conf的配置文件,然后写入配置信息:

#Rsyncserver

#Created by kirk

#rsync.conf start#

uid = rsync

gid = rsync

user chroot = no

maxconnections = 200                 并发连接数

timeout = 600                              超时数

pid file =/var/run/rsyncd.pid         进程号放在这个文件

lock file = /var/run/rsync.lock

log file =/var/log/rsyncd.log               日志文件,出问题就来这里看。

igore erros

read only =false                                 可读写

list = false

hosts allow = 10.0.0.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

#######################################

[backup]

comment = www by kirk

path = /backup

5.1.2启动服务:

[[email protected] ~]# rsync --daemon

[[email protected] ~]# ps -ef|grep rsync|grep-v grep

root       1794     1  0 05:11 ?        00:00:00 rsync --daemon

[[email protected] ~]# netstat -lntup|greprsync

tcp        0     0 0.0.0.0:873                0.0.0.0:*                   LISTEN      1794/rsync

tcp        0     0 :::873                     :::*                        LISTEN      1794/rsync

[[email protected] ~]# lsof -i:873

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

rsync  1794 root    3u  IPv4 15101      0t0  TCP *:rsync (LISTEN)

rsync  1794 root    5u  IPv6 15102      0t0  TCP *:rsync (LISTEN)

5.1.3服务器端配置:

[[email protected]~]# useradd rsync -s /sbin/nologin -M              建立虚拟账号

[[email protected]~]# mkdir /backup       建立备份目录

[[email protected]~]# chown -R rsync /backup/          修改备份目录权限,客户端可以推送数据

[[email protected] ~]#echo "rsync_backup:oldboy" >>/etc/rsync.password 建立密码文件[K1]

[[email protected] ~]# cat /etc/rsync.password

rsync_backup:oldboy  给用户auth users = rsync_backup设定的密码是oldboy

 

 

5.1.4权限修改:

[[email protected]~]# chmod 600 /etc/rsync.password                 其他人不可读写,安全

[[email protected] ~]# ll /etc/rsync.password

-rw-------. 1 root root 20 Mar  3 05:21 /etc/rsync.password

5.1.5图解:

5.1.6加入开机自启动:

[[email protected] ~]# echo "rsync--daemon" >>/etc/rc.local

[[email protected] ~]# cat /etc/rc.local

#!/bin/sh

#

# This script will be executed *after*all the other init scripts.

# You can put your own initializationstuff in here if you don‘t

# want to do the full Sys V style initstuff.

touch /var/lock/subsys/local

>/etc/udev/rules.d/70-persistent-net.rules

rsync --daemon

rsync --daemon

[[email protected] ~]#

5.2 客户端配置

5.2.1 创建配置密码文件

[[email protected] ~]# echo"oldboy" >/etc/rsync.password

[[email protected] ~]# chmod 600/etc/rsync.password

5.2.1 测试推送

[[email protected] ~]# rsync -avz /tmp/[email protected]::backup --password-file=/etc/rsync.password

sendingincremental file list

./

pull.txt

yum.log

.ICE-unix/

sent 176 bytes  received 53 bytes  458.00 bytes/sec

total size is 5  speedup is 0.02

[[email protected] ~]# rsync-aPz /tmp/ [email protected]::backup--password-file=/etc/rsync.password

sending incremental file list

sent 89 bytes  received 9 bytes  196.00 bytes/sec

total size is 5  speedup is 0.05

[[email protected] ~]#

六 安全优化

6.1 绑定IP或者端口

rsync --daemon --address=10.0.0.100

七 排错

7.1 服务器端排除

1、查看rsync服务配置文件路径是否正确,正常默认的路径是/etc/rsyncd.conf

2、查看配置文件里面host allow ,host deny,允许的Ip网段是否是允许的客户端访问

3、查看配置文件中的path参数里的路径是否存在,权限是否正确

4、查看rsync服务是否启动,查看命令为:ps -ef|grep rsync,端口是否存在netstat -lnutp|grep 873 or lsof -i :873

5、参考iptables防火墙和selinux是否开启允许rsync服务通过,也可以考虑关闭防火墙和selinux

6、查看服务器rsync配置的文件是否为600的权限,文件格式是否是正确user:passwd,文件路径和配置文件里的secrectfiles参数对应

7、如果是推送数据,要查看下,配置rsyncd.conf文件中用户是否对模块下有写的权限

7.2 客户端排除思路

1、查看您客户端rysnc配置的密码文件是否一致,权限是否600,密码文件格式是否正确

2、用Telnet连接rsync服务器ip地址873端口,查看服务是否启动eg:telnet 10.0.0.100 873

3、客户端执行命令是 rysnc -avzP [email protected]::backup/ /test/--password-file=/etc/rsync.password

八 crontab+rsync

1、建立rysnc的密码文件

echo "oldboy">>/etc/rsync.password

cat /etc/rsync.password

ll /etc/rsync.password

chmod 600 /etc/rsync.password

ll /etc/rsync.password

2、创建将要备份的目录,我这里是创建了以ip和时间为目录名字的。

mkdir -p /backup/`ifconfig eth0|awk -F"[ :]+" ‘NR==2 {print $4}‘`_$(date +%F)

[[email protected] scripts]# ll /backup/

total 4

drwxr-xr-x. 2root root 4096 Mar  4 09:41 10.0.0.101_2016-03-04            目录名字

3、我这里是要备份/cron/root 和/etc/rc.local。而且我复制他们后也用时间命名:

cp /var/spool/cron/root/backup/10.0.0.101_2016-03-04/cron_root_$(date +%F)

cp /etc/rc.local/backup/10.0.0.101_2016-03-04/rc.loacl_$(date +%F)

[[email protected] scripts]# ll/backup/10.0.0.101_2016-03-04/

total 8

-rw-------. 1 root root 150 Mar  4 09:42 cron_rsync_2016-03-04

-rwxr-xr-x. 1 root root 315 Mar  4 09:42 rc.loacl_2016-03-04

4、复制上面的命令编写脚本文件:

[[email protected] scripts]# cat cron_rsync.sh

#!/bin/sh

path=/backup

dir="`ifconfig eth0|awk -F "[:]+" ‘NR==2 {print $4}‘`_$(date +%F)"

mkdir $path/$dir -p &&\

/bin/cp /var/spool/cron/root$path/$dir/cron_rsync_$(date +%F) &&\

/bin/cp /etc/rc.local$path/$dir/rc.loacl_$(date +%F) &&\

rsync -az $path/[email protected]::backup/ --password-file=/etc/rsync.password

5.测试脚本

[[email protected] scripts]# sh cron_rsync.sh

6、服务器端查看测试命令

[[email protected] ~]# ll /backup/

total 16

drwxr-xr-x. 2 rsync rsync 4096 Mar  4 09:4110.0.0.101_2016-03-04

drwxr-xr-x. 2 rsync rsync 4096 Mar  3 16:06 10.0.0.102_2016-03-03

drwxr-xr-x. 2 rsync rsync 4096 Mar  4 10:26 10.0.0.102_2016-03-04

-rw-------. 1 rsync rsync  328 Mar 4 10:33 2016-03-04

7、创建定时任务

[[email protected] scripts]# crontab -l

########rysnc+crontab#################

00 01 * * */bin/sh /server/scripts/cron_rsync.sh>/dev/null 2>&1           脚本放置路径

优缺点

优点:

1、增量备份、支持scoket(daemon),集中备份(支持推拉,都是以客户端为参照物)

2、远程SHELL通道模式还可以加密(SSH)传输,scoket(daemon)需要加密传输,可以利用vpn服务或ipsec服务

缺点:

1、大量小文件情况下同步,比对时间较长,有的时候,rsync进程可能会停止

2、同步打文件,10G这样的打文件有时也会有问题,出现:中断,未完整同步前,是隐藏文件

rsync长时间传输的限速参数:

--bwlimit=KBPS



[K1]/etc/rsync.password 这个配置文件就是在/etc/rsyncd.conf配置文件中指定的那个密码文件和路径。rsync_backup是指定的用户auth users = rsync_backup。

[K2]这里是参数P和v的对比

时间: 2024-12-23 16:18:10

Rsync介绍及配置的相关文章

linux下一个rsync工具和配置

本文介绍了整个基本:http://www.2cto.com/os/201308/238733.html 一些简单的备忘录: 1. ubuntu下通过apt-get就可以安装: 2. 配置文件/etc/rsync.conf默认不存在,须要手动创建: 3. 能够通过守护进程xinetd来启动rsync,在/etc/default/rsync中配置: 4. server在/etc/rsync.passwd中配置登录名和password,不一定非得这个文件,能够在/etc/rsync.conf中配置每个

linux rsync介绍(八)

[教程主题]:rsync [1] rsync介绍 Rsync(Remote Synchronize) 是一个远程资料同步工具,可通过LAN/WAN快速同步多台主机,Rsync使用所为的“Rsync演算法”来使本地主机和远程主机之间达到同步,这个演算法并不是每次都整份传送,它只传送两台计算机之间所备份的资料不同的部分,因此速度相当快. Rsync的优点如下: 1.可以镜像保存整个目录树和文件系统. 2.可以很容易的做到保持原来文件的许可权.时间.软链接等. 3.无须特使许可权即可安装. 4.拥有优

SharePoint 2013 SPDistributedCacheService 介绍与配置

SharePoint 2013 SPDistributedCacheService 是SharePoint  server 2013引入的一种缓存机制,它通常用于以下功能的缓存: Newsfeeds Authentication OneNote client access Security Trimming Page load performance (直接影响页面加载和反应速度) 有些Cache 是不通过SPDistributedCacheService 缓存的,例如: Blob Cache

sersync+rsync实时同步配置案例

目前业内比较靠谱的同步解决方案有: rsync+inotify-tools,Openduckbill+inotify-tools和rsync+sersync 前两者由于是基于脚本语言编写,所以规范程度,执行效率相对rsync+sersync就稍微弱一些. sersync是使用c++编写,基于boost1.43.0,inotify api,rsync command开发,主要用于服务器同步,web镜像等功能.其对linux系统文件系统产生的临时文件和重复的文件操作能够进行过滤,所以在结合rsync

rsync安装与配置使用 数据同步方案(centos6.5)

rsync + crond   ==定时数据同步 sersync(inotify)  + rsync  ==实时数据同步,利用rsync实现 ##应用场景 ..1 主备服务器之间同步数据定时    ==配合crond sersync inotify等实现 ##rsync的安装配置与使用 服务端 ..1 安装 centos6.5已经安装了rsync rpm -qa | grep rsync 如果没有,用下面两种方式之一安装 yum install rsync rpm -ivh rsyn.xxxxx

sersync+rsync 数据同步配置

目标:  在master 主机上写入数据后,master 利用sersync 监控本地数据目录,当发生变化时,触发命令,使用rsync推送变化的数据到远程的slave主机上,实现数据同步. 配置思路: master:   1. 安装 sersync ,配置confxml.xml文件(其实质就是记录执行rsync命令的一些参数,启动sersync2的服务后,会监控我们指定的目录,当发生变化时,就使用rsync 命令对变化的目录和文件进行同步) 2. 配置执行rsync 命令时所需要的密码文件,此密

03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

 1 PersonTestMapper.xml中的内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:命名空间

Petapoco的介绍和配置

一.基本介绍 一个产品诞生以后,宣传必不可少,初识Petapoco,我居然耐心把官网上的英文介绍通读一遍,因为我发现,作者是一个十足的文艺青年,他没有把他的产品宣传得无比高大上,而是很多地方透露着有点低调的.谦卑的气息,清新,可爱.很多地方都能看出,比如在Background那一段:So, what's with the name? Well if Massive is massive, this is "Peta" massive (it's now over 1,500 lines

Rsync+sersync同步配置

源服务器:10.11.244.3 目标服务器:10.11.11.108 # 前言: ## 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录. ## 二.Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别?