rsync服务器 - 数据同步 or backup

一.教程:
1.从原始网站下载:http://rsync.samba.org/ftp/rsync/
2.[root@localhost bin]#./configure
[root@localhost bin]#make
[root@localhost bin]#make install
说明一点,客户机和服务器都要安装rsync。客户机以客户端方式运行rsync,服务器端以服务器方式运行rsync,他监听873端口。
3.运行rsync
/usr/local/bin/rsync --daemon
验证启动是否成功:
netstat -na|grep 873
4.设置rsync
简单设置:编辑/etc/rsyncd.conf文件如下:
#全局设置部分
secrets file = /etc/rsyncd.secrets 认证用户名和密码文件的名称和位置
motd file = /etc/rsyncd.motd 欢迎信息文件名称和存放位置(此文件没有,能自行添加)
read only = yes
list = yes
uid = root
gid = root
#hosts allow = 10.4.5.213
#hosts deny = 10.4.5.0/24
use chroot = no
max connections = 5
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
#模块设置部分
[paolo]
comment = Paolo ’s directory
path = /home/test/software
auth users = rsync
#secrets file = /etc/rsyncd.secrets
5.生成验证证文件
echo "rsync:rsync_password" >> /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
6.在客户端服务器同步服务器上的文件
rsync -vzrtopg --delete --progress rsync@10.4.5.161::paolo /china/
或加上--password-file=/etc/rsyncd.secrets选项
上面的命令把10.4.5.161服务器上的paolo模块中的目录的文件传送到本机/china目录中,并删除本机/china目录中在161服务器paolo模块指定目录中没有的文件。以使两台计算机的目录文件同步。

二.CU教程
http://bbs.chinaunix.net/viewthread.php?tid=877009&highlight=rsync

----------------------------------------------
三:
应用说明
正如非常多人知道的那样,Rsync可是开源同步软件中的老大哥。非常多人(当然也包括我自己)都在使用他来进行同步、备份工作。他的功能强大,应用灵活,就不多说了。如果对Rsync前世今生非常感兴趣,那么一会看看简介,然后到他们官方网站好好看看。
虽然Rsync非常强大,不过他并没有直接支持加密传输。也就是说,他是直接明文传输的,对于一些安全需求高的数据,那就不太保险了。不信?你能用抓包工具试试看。
如果要传输保密文件,那怎么办?放心,Rsync提供了ssh通道功能。也就是通过ssh安全通道来传输,传输过程中,数据是经过ssh加密的。不信?你还是能抓包看看。
这就是我们要进行的工作了,设置一个具有ssh安全通道的,安全级别高的同步体系。
[
编辑
] 加密传输
我们利用SSH来达到安全通道的目的。SSH 的 RSA 和 DSA 认证协议的基础是一对专门生成的密钥,分别叫做 专用密钥和 公用密钥(简称 私钥和公钥,下面我们都使用简称)。使用这些基于密钥的认证系统的优势在于:在许多情况下,有可能不必手工输入密码就能建立起安全的连接。
尽管基于密钥的认证协议相当安全,不过如果不注意保护,把私钥泄露了,那么别人也就能登录到有公钥的服务器。那就非常不安全了。
因此居于安全考虑,我们进行的同步设置,是居于普通用户来进行备份的。
[
编辑
] 同步方向
在这里采用的,不是常见的C/S模式,即源服务器运行rsync --daemon模式,备份服务器主动同步。而是采用SSH通道模式,不必设置rsync --daemon。从源服务器直接同步到备份服务器。
[
编辑
] 环境说明
我设置的是A、B 两台主机,A主机做为源服务器,B主机作为客户端。
[
编辑
] 硬件环境
两台服务器的设置相同,硬件设置如下:
单志强2.4G CPU
2G 内存
36G SCSI硬盘
1G inter网卡
[
编辑
] 网络环境
两台服务器在同一个机房,不过不同网段。IP地址分别设置如下:
A服务器的IP地址:
192.168.8.8
B服务器的IP地址:
192.168.11.11


[
编辑
] 系统环境
操作系统:
A、B两台服务器均安装了FreeBSD 6.2-RELEASE-p2(通过make world升级到最新)。
SSH是系统自带的版本:
# ssh -V
OpenSSH_4.5p1 FreeBSD-20061110, OpenSSL 0.9.7e-p1 25 Oct 2004
[
编辑
] 软件简介
由于我们是在unix/linux下使用SSH和RSYNC,因此仅仅介绍SSH和RSYNC,而不介绍系统及其他软件。
[
编辑
] SSH的简介
SSH是英文Secure Shell的简写形式。通过使用SSH,你能把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,更有一个额外的好处就是传输的数据是经过压缩的,所以能加快传输的速度。SSH有非常多功能,他既能代替Telnet,又能为 FTP、Pop、甚至为PPP提供一个安全的"通道"。
最初的SSH是由芬兰的一家公司研发的。不过因为受版权和加密算法的限制,目前非常多人都转而使用OpenSSH。OpenSSH是SSH的替代软件包,而且是免费的,能预计将来会有越来越多的人使用他而不是SSH。目前所发行的开源UNIX/Linux,默认都会带有OpenSSH(一些可能需要你额外的安装一下)。
如果你喜欢的话,也能安装SSH,他虽然有限制,不过对于非商业用户,是能免费使用的。
相关链接如下:

http://openssh.org

http://ssh.com/products/ssh_secure_shell/
[
编辑
] RSYNC的简介
在RSYNC的官方网站上,对于RSYNC的介绍非常简单。
rsync 是个开放源码的快速的文件同步工具,是在GUN的GPL2协议下发布的。
所以所有人都能免费的使用设置修改和再发行他。rsync的作者是 Wayne Davison。
相关链接如下:

http://rsync.samba.org/
[
编辑
] 软件安装
[
编辑
] SSH的安装
由于系统会自带有SSH,我们就直接使用系统自带的SSH,而不再独立安装。
我会另外写一个SSH安装设置的专题文章。
[
编辑
] RSYNC的安装
我是在FreeBSD上进行的安装设置,因此同时给出利用FreeBSD的ports安装和手工安装两种方式。其中手工安装方式,也能在Linux下进行。
[
编辑
] ports方式安装
在开始ports安装之前,先做一次ports更新。这样做的目的是让ports保持最新,并且让通过ports安装的软件是最新的。
用CVSUP更新:
# cvsup -L2 -g /opt/etc/ports-supfile
你需要根据自己的ports-supfile文件路径来指定。
进入rsync的ports目录:
# cd /usr/ports/net/rsync/
查看软件版本信息:
# cat distinfo
MD5 (rsync-2.6.9.tar.gz) = 996d8d8831dbca17910094e56dcb5942
SHA256 (rsync-2.6.9.tar.gz) = ca437301becd890e73300bc69a39189ff1564baa761948ff149b3dd7bde633f9
SIZE (rsync-2.6.9.tar.gz) = 811841
由此我们能得知rsync的版本是 2.6.9,也就是目前最新的发行版本。
选择设置:
# make config
                          [ ] POPT_PORT  Use popt from devel/popt instead of bundled one
                          [X] TIMELIMIT  Time limit patch                                
                          [X] FLAGSP     File system flags support patch, adds --flags  
                          [ ] ACLSP      ACL support patch, adds --acls                 
                          [X] SSH        Use SSH instead of RSH                        
在出现选项界面里,通过移动上下键和空格键,选择SSH,也就是用SSH替换RSH。其他的默认就能了。
完成安装:
# make install clean
非常简单吧?使用ports的好处就是,安装太方便了。只要执行 make install 他会自动下载,编译,安装。clean 是告诉ports,安装完后,清晰源码文件和其他过程文件。
[
编辑
] 手工安装
*下载安装包
下载页面:

http://rsync.samba.org/ftp/rsync/
具体下载链接:

http://rsync.samba.org/ftp/rsync/rsync-2.6.9.tar.gz
*解压和设置
# tar -zxvf rsync-2.6.9.tar.gz
# cd rsync-2.6.9
# ./configure --disable-debug --with-rsh=ssh
说明:
由于 --with-rsh=默认就是ssh,所以也能不显式指定这个设置项;
还能通过 --prefix=/path 来指定安装目录,默认则安装到/usr/local/bin目录;
关闭调试模式 --disable-debug;
也能通过 ./configure --help 查看更多选项,再根据自己的需要来设定。
*编译和安装
# make
# make install
至此,没有出现什么错误的话,整个手工安装过程就完毕了。
[
编辑
] ssh的设置
在这里的设置,当然不是指怎么设置SSH服务啦。而是指设置用来SSH登录相关的帐户的公钥、私钥。
注意: 备份服务器必须运行sshd服务。
[
编辑
] 创建帐户
在A、B两台服务器上各创建一个普通帐户,不必设置密码。
在FreeBSD下创建帐户:
# pw user add -d /home/mybackup -n mybackup
在Linux下创建帐户:
# useradd -d /home/mybackup mybackup
[
编辑
] 生成公钥和私钥
这些操作是在同步源服务器,就是有需要做备份数据的服务器。这里是指A主机。
首先,转换到mybackup帐户及该帐户的用户目录下:
# su mybackup
$ cd ~
$ pwd
/home/mybackup
$ mkdir .ssh
$ cd .ssh
$ pwd
/usr/home/mybackup/.ssh
生成公钥、私钥:
$ ssh-keygen -t dsa -b 1024
Generating public/private dsa key pair.
Enter file in which to save the key (/home/mybackup/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mybackup/.ssh/id_dsa.
Your public key has been saved in /home/mybackup/.ssh/id_dsa.pub.
The key fingerprint is:
20:7c:c3:b4:69:a7:e1:af:f3:e3:ae:e7:9d:0a:b6:69 mybackup@slave.isyi.com
注意:
当提示 Enter passphrase (empty for no passphrase): 时,不要输入,直接回车;并且提示 Enter same passphrase again: 时,也直接回车。
这时候,我们就会得到公钥、私钥两个文件在.ssh目录下。我们查看一下:
$ ls -al .ssh
total 8
drwxr-xr-x  2 mybackup  mybackup  512 Mar 22 17:48 .
drwxr-xr-x  3 mybackup  mybackup  512 Mar 22 17:46 ..
-rw-------  1 mybackup  mybackup  672 Mar 22 17:48 id_dsa
-rw-r--r--  1 mybackup  mybackup  613 Mar 22 17:48 id_dsa.pub
其中 id_dsa 是密钥文件,id_dsa.pub 顾名思义,是公钥文件啦。
[
编辑
] 拷贝到客户端
因为我们之前生成的公钥、密钥,都是在源服务器上操作。而客户端(做备份的服务器)上,需要有刚才生成的公钥,才能不提示输入密码,直接登录ssh。
使用scp来远程拷贝:
$ scp /home/mybackup/.ssh/id_dsa.pub root@192.168.11.11:/home/mybackup/.ssh/authorized_keys
如果用户名、密码和文件路径没有错误,在按提示输入192.168.11.11的root密码后,非常快就会把id_dsa.pub文件拷贝过去了。
[
编辑
] 测试登录
将公钥拷贝到客户端后,我们来测试下能不能在源服务器上不用输入密码ssh登录客户端服务器。
$ ssh -l mybackup 192.168.11.11
或:
$ ssh mybackup@192.168.11.11
如果没有提示输入密码,就登录到192.168.11.11 服务器,那恭喜你,说明设置成功了。
[
编辑
] Rsync的设置
事实上,我们在利用SSH通道来运行RSYNC时,是不必设置一个Rsync服务器的。在这里我们指的设置,是有两方面,一是运行rsync的参数,一是运行同步控制的脚本。
[
编辑
] Rsync的常用参数
rsync 常用的运行参数说明:
-v, ?verbose 周详模式输出
-c, ?checksum 打开校验开关,强制对文件传输进行校验
-a, ?archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, ?recursive 对子目录以递归模式处理
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-e, --rsh=COMMAND 指定替代rsh的shell程式
--delete 删除那些DST中SRC没有的文件
--progress 显示备份过程
-t, --times 保持文件时间信息
-z, --compress 对备份的文件在传输时进行压缩处理
--stats 给出某些文件的传输状态
测试rsync同步,将A主机的/opt/etc同步到B主机的/tmp/myetc目录下:
$ rsync -vzrtopg --progress --stats --delete -e ssh /opt/etc mybackup@192.168.11.11:/tmp/myetc
然后到B主机的/tmp/myetc目录下看看,是不是发现一个etc目录,并且这个etc目录下面的文件,跟A主机的/opt/etc目录下面的文件相同。
[
编辑
] 控制脚本
因为往往备份的目录是相对固定的,如果每次备份都要输入那么长一串,会不会觉得非常麻烦呢?那我们写一个脚本来工作,并且利用crontab来定时定点的执行同步工作。
控制脚本代码如下:
#!/bin/sh
# rsyncer.sh
# author Jonsen Yang( 16hot )
# home
http://www.isyi.com

http://16hot.blog.isyi.com
# date 2007-03-20
#
LOCAL_DIR="/opt/etc" ;
REMOTE_USER="mybackup" ;
REMOTE_HOST="192.168.11.11" ;
REMOTE_DIR="/tmp/myetc" ;
RSYNC_CMD="/usr/local/bin/rsync" ;
RSYNC_LOG="/opt/var/log/rsync.log" ;
RSYNC_RUN="${RSYNC_CMD} -vzrtopg --progress --stats --delete -e ssh ${LOCAL_DIR} ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}";
${RSYNC_RUN} >> ${RSYNC_LOG} 2>&1;
# end rsyncer.sh
将 rsyncer.sh 脚本保存到 /opt/bin(或你自己的工作目录)目录下,还要注意确保设置好mybackup用户能执行的属性。
$ chmod +x /opt/bin/rsyncer.sh
另外,要注意 /opt/var/log/rsync.log 也必须是mybackup帐户能读写才行。
[
编辑
] 运行
经过上面的步骤后,可谓万事俱备,只欠运行了。其实也非常简单,我们只需要设置crontab,定时执行备份脚本进行备份就能了。
$ crontab -e
0 3  * * *  /opt/bin/rsyncer.sh
这样,每天凌晨3点,就会自动执行 /opt/bin/rsyncer.sh 进行备份了。
[
编辑
] 结束语
在开源软件里,非常多非常多非常好用而且分文不收的软件。我们合理的利用这些软件,能为我们带来非常多非常多好处。比如,节省成本,提高工作效率等等。
因此,多学习开源软件,是非常好的。
作者: Jonsen Yang( 16hot、 杨明茂 )
[
编辑
] 附录
[
编辑
] RSYNC 参数详解 -v, ?verbose 周详模式输出
-q, ?quiet 精简输出模式
-c, ?checksum 打开校验开关,强制对文件传输进行校验
-a, ?archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, ?recursive 对子目录以递归模式处理
-R, ?relative 使用相对路径信息
-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 显示帮助信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值