rsync应用之同步备份
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 # 日志记录文件的存放位置
# 这里是认证的模块名,在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配置完成。 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服务,如果没有设成自动启动,需要设置一下,如下图。
http://fengyu.souidc.org/images/RsyncServer.jpg
然后在安装了同步Rsync Server和Rsync Client软件的windows服务器上设置环境变量:
http://fengyu.souidc.org/images/windows_path.jpg
把目录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
#
#
#path = /cygdrive/c/work
#read only = false
#transfer logging = yes
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
就知道同步是否正常运行了。 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 ... SRC ... HOST:DEST
其中通常用:-vzrtopg --progress --delete,意义大概是显示同步过程详细信息,从目的地中删除源中不存在的文件。
如果配好了ssh的密钥对,那么这个地方就不需要指定了。比如我将我修改后的网站同步到服务器上,只需输入以下命令:
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通过传输,传输时会压缩数据, 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 ,为了避免出问题,最好设置为绝对路径。
里面的内容一定要写为相对路径
页:
[1]