服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 7287|回复: 4

rsync应用之同步备份

[复制链接]
dirtysea 发表于 2009-3-26 15:55:16 | 显示全部楼层 |阅读模式
linux rsync 数据同步

   
  

例如,服务器A是192.168.0.100,服务器B是192.168.0.101,例如将100上的/www目录下

的文件同步到192.168.0.101的/backup目录下,则100上运行rsync作为服务器端,101做为客户端。


一 、服务器端配置
首先把192.168.0.100服务器端的配置文件建立起来。


安装
rpm -q rsync
rpm -qa|grep rsync

配置
vi /etc/rsyncd.conf  

内容如下:



uid = nobody
gid = nobody
use chroot = false                 # 不使用chroot
max connections = 4                # 最大连接数为4
pid file = /var/run/rsyncd.pid      #pid文件的存放位置
lock file = /var/run/rsync.lock     #锁文件的存放位置
log file = /var/log/rsyncd.log      # 日志记录文件的存放位置

[backup]                            # 这里是认证的模块名,在client端需要指
path = /www/                     # 需要做镜像的目录,不可缺少!
ignore errors                       # 可以忽略一些无关的IO错误
read only = false                   # 只读
list = false                        # 不允许列文件
hosts allow = 192.168.0.101
hosts deny = 0.0.0.0/32
auth users = dirtysea          # 认证的用户名,如果没有这行,则表明是匿名,此用户与系统无关
secrets file = /etc/rsyncd.pwd  # 认证文件名



配置文件中,uid和gid指明了运行身份,chroot表示连接后自动切换目录,read only=false是允许别的

客户端向本机的服务器端上传。host allow和deny是限制连接地址。auth user是认证用户名,secrets

file = /etc/rsyncd.pwd是表示认证用户名的时候到这里读取密码。



接下来编辑server端的密码认证文件:



vi /etc/rsyncd.pwd



dirtysea:qq23665496



设置密码文件权限700:(权限不对会登陆不上)



chmod 700 /etc/rsyncd.pwd



然后启动rsync服务:

/usr/bin/rsync --daemon  (在server端以守护进程形式运行。)



把rsync加入自动启动脚本,开机后自动启动:

echo "/usr/bin/rsync --daemon">>/etc/rc.d/rc.local



设置防火墙允许rsync的873端口被连接。

iptables -I INPUT -p tcp --dport 873 -j ACCEPT





二、客户端的配置


现在到192.168.0.101的客户端上,命令格式如下:



rsync [-参数] 源地址路径 目标地址路径
-v参数表示显示输出结果,r表示保持属性,t表示保持时间,L表示软link视作普通文件。


例如将101上的/www目录下的文件同步到192.168.0.100的/backup目录中。



则创建执行脚本:



vi /root/rsync.sh


rsync -vzrtopg --progress --delete --password-file=/backup/rsync.pwd

dirtysea@192.168.0.100::backup  /backup




创建客户端的密码文件:



vi /backup/rsync.pwd


qq23665496


注意:客户端的密码脚本不带用户名。

设置密码文件权限700:(权限不对会登陆不上)


chmod /backup/rsync.pwd


将客户端脚本加入定期任务:



echo "00 3 * * * root /root/rsync.sh" >> /etc/crontab



则每天凌晨3点运行同步。



现在可以直接运行 /root/rsync.sh 观看效果。



简单的rsync配置完成。
 楼主| dirtysea 发表于 2009-5-18 13:45:51 | 显示全部楼层
Windows下也有类似unix下的rsync软件,最近我试用了cwRsync软件,把配置和使用方法介绍一下,使用它确实比较方便!

        同步Rsync Server软件下载cwRsync_Server_2.0.10_Installer.zip

        同步Rsync Client软件下载cwRsync_Client_2.0.10_Installer.zip
   
    在需要传同步文件出来的windows服务器上安装同步Rsync Server软件cwRsync_Server_2.0.10_Installer后,
   
    会在服务器上建一个管理员级别的SvcwRsync用户,我们最好修改一下这个用户的密码。
   
    在此服务器上还增加了一个RsyncServer服务,如果没有设成自动启动,需要设置一下,如下图。   
   

   
    然后在安装了同步Rsync Server和Rsync Client软件的windows服务器上设置环境变量:   
   

   
 把目录C:\Program Files\cwRsyncServer\bin填加到当前用户的path里。
   
    同步Rsync Server上配置文件rsyncd.conf的一般格式类似:

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

use chroot = false
strict modes = false
hosts allow = 192.168.0.101
log file = rsyncd.log
pid file = rsyncd.pid
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
#[test]
#path = /cygdrive/c/work
#read only = false
#transfer logging = yes
[backup]
path = /cygdrive/d/www/
read only = false
ignore errors
auth users = dirtysea
secrets file = /cygdrive/d/server-secret/rsync.pwd
transfer logging = yes
   
     
###############################################################   
     
  在Rsync Server的d:\server-secret\目录下密码文件rsync.pwd里面内容如下:

dirtysea:qq23665496

  这里面的用户名和密码可以任意设定,跟windwos和unix帐号没有任何关系。记住用冒号:分割用户名和密码

   在Rsync Client端写一个包含rsync命令的批处理程序rsync.bat
  rsync -vzrtopg --progress --delete --password-file=/cygdrive/d/client-secret/rsync.pwd dirtysea@192.168.0.100::backup  /cygdrive/e/backup


   请注意在Rsync Client端windows服务器d:\client-secret文件里只需要填写密码,如下:
   
qq23665496
   
   
   如果想把同步操作定时完成,可以在Windows服务器上设定任务计划,
   
   最后管理员定期查看Rsync Server上的同步日志文件C:\Program Files\cwRsyncServer\rsyncd.log
   
   就知道同步是否正常运行了。
 楼主| dirtysea 发表于 2010-7-12 16:46:32 | 显示全部楼层
ubuntu之rsync服务


ubuntu缺省安装的安装中,rsync服务是没有开启的。需要做3步:

1、修改/etc/default/rsync,让rsync服务在开机的时候启动。

$ sudo vi /etc/default/rsync

将RSYNC_ENABLE=false改为RSYNC_ENABLE=true

2、创建一个rsyncd.conf,缺省安装中是没有这个文件的。

$ sudo vi /etc/rsyncd.conf

输入以下几行:

uid=nobody
gid=nobody
max connections=3
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsync.pwd

3、启动rsync服务。

$ /etc/init.d/rsync start

在客户端中就可以和服务器同步了。rsync的语法如下:

rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST

其中[OPTION]通常用:-vzrtopg --progress --delete,意义大概是显示同步过程详细信息,从目的地中删除源中不存在的文件。

如果配好了ssh的密钥对,那么这个地方就不需要指定[USER@]了。比如我将我修改后的网站同步到服务器上,只需输入以下命令:

rsync -vzrtopg --progress --delete ./dagwww/ 192.168.0.1:dagwww

还可以在~/.bashrc中加入一个alias:

alias rsyncweb="rsync -vzrtopg --progress --delete ~/dagwww/ 192.168.0.1:dagwww "

然后source一下,让它启用。

$source ~/.bashrc

之后就可以用rsyncweb命令来同步了。rsync只同步修改过的文件,而且是通过ssh通过传输,传输时会压缩数据,
 楼主| dirtysea 发表于 2010-8-23 11:17:34 | 显示全部楼层
rsync有六种不同的工作模式:

  1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup

  2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c

foo:src

  3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz

foo:src/bar /data

  4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack

  5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www

  6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www


rsync详解之exclude排除文件
rsync  --exclude files and folders
Note: the directory path is relative to the folder you are backing up.
注意:这个路径必须是一个相对路径,不能是绝对路径
可以使用通配符 避开不想复制的内容
比如--exclude “fire*”
那么fire打头的文件或者文件夹全部不会被复制
5如果想要避开复制的文件过多,可以这么写
--exclude-from=/exclude.list

exclude.list 是一个文件,放置的位置是绝对路径的/exclude.list ,为了避免出问题,最好设置为绝对路径。

里面的内容一定要写为相对路径
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-3-28 18:08 , Processed in 0.132188 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表