+-
rsync 使用:(llinux 和windows 版本数据同步|文件增量备份)

================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