
================LINUX版本================
1、什么是rsync:
rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用。本文主要讲述的是如何自架rsync服务器,以实现文件传输、备份和镜像。相对tar和wget来说,rsync 也有其自身的优点,比如速度快、安全、高效。
2、rsync安装:
我的系统是centos,直接:yum install rsync
如果是ubuntu:sudo apt-get install rsync
3、rsync配置:
#在/etc目录下创建一个rsyncd的目录,我们用来存放rsyncd.conf 和rsyncd.secrets文件; mkdir /etc/rsyncd touch /etc/rsyncd/rsyncd.conf #创建rsyncd.conf ,这是rsync服务器的配置文件; touch /etc/rsyncd/rsyncd.secrets #创建rsyncd.secrets ,这是用户密码文件; chmod 600 /etc/rsyncd/rsyncd.secrets #为了密码的安全性,我们把权限设为600; #特别提醒,这里一定要授权,防止客户端连接的是报错: @ERROR: auth failed on module touch /etc/rsyncd/rsyncd.motd #创建rsyncd.motd文件,这是定义服务器信息的文件。
4、rsyncd.conf 、rsyncd.secrets、rsyncd.motd 文件内容:
# =============rsyncd.conf 内容======================= # Minimal configuration file for rsync daemon # See rsync(1) and rsyncd.conf(5) man pages for help # This line is required by the /etc/init.d/rsyncd script pid file = /var/run/rsyncd.pid port = 873 address = 192.168.3.90 #uid = nobody #gid = nobody uid = root gid = root use chroot = yes read only = yes #limit access to private LANs #hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 #hosts deny=* max connections = 5 motd file = /etc/rsyncd/rsyncd.motd #This will give you a separate log file #log file = /var/log/rsync.log #This will log every file transferred - up to 85,000+ per user, per sync #transfer logging = yes #log format = %t %a %m %f %b #syslog facility = local3 timeout = 300 [rsyncdhome] path = /home/ngmsw-files/files list=yes ignore errors auth users = rsyncduser secrets file = /etc/rsyncd/rsyncd.secrets comment = rsyncServer
rsyncd.secrets内容:
rsyncduser:ebiz
rsyncd.motd 内容:
+++++++++++++++++++++++++++ + Hello welcome to rsync 2002-2007 + +++++++++++++++++++++++++++
5、rsync 服务启动:关闭防火墙等:
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
6、客户端调用,定时同步:
mkdir /home/bak #建立目录 mkdir /home/bak/files #建立目录 cd /home/bak #进入目录,建立rsync.password并授权,里面的就是服务端用户对应 密码的值 touch rsync.password chmod 600 rsync.password echo "ebiz"> rsync.password #建立更新脚本 vi filesbak.sh #内容: rsync -avzP --delete --password-file=/home/bak/rsync.password [email protected]::rsyncdhome /home/bak/files #授权 chmod +x filesbak.sh vi /etc/crontab #编辑文件,在下面添加以下内容 30 1 * * * root /home/bak/filesbak.sh #表示每天凌晨1点30分执行备份
=========================Windows版本==============================
1、windows服务端和客户端下载:
服务端:cwRsync_Server_2.0.10_Installer.rar(2.8M)
客户端:cwRsync_Client_2.0.10_Installer.ra(2.9M)
2、windows服务端安装以及启动:
a.解压cwRsync_Client_2.0.10_Installer.rar,安装
b.进入安装目录 修改配置文件 rsyncd.config:
use chroot = false strict modes = false hosts allow = * log file = rsyncd.log pid file = rsyncd.pid max connections = 4 motd file = ./rsyncd.motd #欢迎语,可以不用 # Module definitions # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work # [rsyncdhome] path = /cygdrive/h/files-hbc/files read only = false transfer logging = yes lock file = rsyncd.lock
c.启动服务:
在控件面板-->管理工具-->服务,找到该服务并启动它,如图:

d.说明rsync默认端口是873,如果是windows服务端,开启873端口,防火墙中添加例外,如图:

3、windows客户端安装 以及 调用脚本 、计划任务:
#windows 调用 [linux服务端]脚本: rsync -avzP --delete --password-file=/cygdrive/i/HBCJ_FILES_BACKUP/rsync.password [email protected]::rsyncdhome /cygdrive/i/HBCJ_FILES_BACKUP/files #windows 调用 [windows服务端]脚本,可以建立bat文件,然后计划任务中定时执行 rsync -avzP --delete rsync://8.8.8.8/rsyncdhome /cygdrive/i/HBCJ_FILES_BACKUP/files #linux 调用 [windows服务端]脚本,可以建立bat文件,然后计划任务中定时执行 rsync -av rsync://8.8.8.8/rsyncdhome /home/filesbak
================LINUX版本 rsync 启动脚本================
#!/bin/bash
#
# rsyncd This shell script takes care of starting and stopping
# standalone rsync.
#
# chkconfig: - 99 50
# description: rsync is a file transport daemon
# processname: rsync
# config: /etc/rsyncd.conf
# Source function library
. /etc/rc.d/init.d/functions
RETVAL=0
rsync="/usr/bin/rsync"
prog="rsync"
CFILE="/etc/rsyncd/rsyncd.conf"
lockfile=${LOCKFILE-/var/lock/subsys/rsync}
pidfile=${PIDFILE-/var/run/rsyncd.pid}
start() {
# Start daemons.
[ -x $rsync ] || \
{ echo "FATAL: No such programme";exit 4; }
[ -f $CFILE ] || \
{ echo "FATAL: config file does not exist";exit 6; }
echo -n $"Starting $prog: "
daemon $rsync --daemon --config=$CFILE
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} ${prog}
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
# call the function we defined
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|status}"
exit 2
esac
exit $RETVAL