Ubuntu rsync同步

>服务器端:Ubuntu 9.10 - 192.168.1.3
客户端:Ubuntu 10.04 - 192.168.1.73

我们先来设置一下服务器端的配置

1.ubuntu系统安装完之后,rsync服务默认不是启动的,我们要修改下面的文件。
$sudo vi /etc/default/rsync
RSYNC_ENABLE=true

2.修改配置文件
$sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc
我们先来查看一下这个文件
$sudo cat /etc/rsyncd.conf

# sample rsyncd.conf configuration file

# GLOBAL OPTIONS

#motd file=/etc/motd #登录欢迎信息
#log file=/var/log/rsyncd #日志文件
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid

#
指定rsync发送日志消息给syslog时的消息级别,常见的消息级别是:uth, authpriv, cron, daemon, ftp,
kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1,
local2, local3,local4, local5, local6和local7。默认值是daemon。 
#syslog facility=daemon

#自定义tcp选项,默认是关闭的
#socket options=

#以下是模块信息,我们可以创建多个模块
# MODULE OPTIONS

[ftp]

comment = public archive #模块描述
        path = /var/www/pub #需要同步的路径
       
use chroot =
yes #默认是yes|true,如果为true,那么在rsync在传输文件以前首先chroot到path参数指定的目录下。这样做的原因是实现额
外的安全防护,但是缺点是需要root权限,并且不能备份指向外部的符号连接指向的目录文件。
#       max connections=10 #最大连接数
        lock file = /var/lock/rsyncd #指定支持max connections参数的锁文件。
# the default for read only is yes...
        read only = yes #只读选项
        list = yes #客户请求时可用模块时是否列出该模块
        uid = nobody #设定该模块传输文件时守护进程应该具有的uid
        gid = nogroup #设定该模块传输文件时守护进程应具有的gid,此项与uid配合可以确定文件的访问权限
#      
exclude
= #用来指定多个由空格隔开的多个模式列表,并将其添加到exclude列表中。这等同于在客户端命令中使用--exclude来指定模式,不过配置文
件中指定的exlude模式不会传递给客户端,而仅仅应用于服务器。一个模块只能指定一个exlude选项,但是可以在模式前面使用"-"和"+"来指定
是exclude还是include
#       exclude from = #可以指定一个包含exclude模式定义的文件名
#       include = #与exclude相似
#       include from = #可以指定一个包含include模式定义的文件名
#      
auth users
= #该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth
users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的
challenge/response认证协议。用户的名和密码以明文方式存放在"secrets
file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)
#       secrets file = /etc/rsyncd.secrets #该文件每行包含一个username:password对,以明文方式存储,只有在auth users被定义时,此选项才生效。同时我们需要将此文件权限设置为0600
        strict modes = yes #该选项指定是否监测密码文件的权限,如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为true
#       hosts allow = #允许的主机
#       hosts deny = #拒绝访问的主机
        ignore errors = no #设定rsync服务器在运行delete操作时是否忽略I/O错误
        ignore nonreadable = yes #设定rysnc服务器忽略那些没有访问文件权限的用户
        transfer logging = no #使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中
#       log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes. #设定日志格式
        timeout = 600 #超时设置(秒)
        refuse options = checksum dry-run #定义一些不允许客户对该模块使用的命令选项列表
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz #告诉rysnc那些文件在传输前不用压缩,默认已设定压缩包不再进行压缩

日志格式选项列表:
%h:远程主机名
%a:远程IP地址
%l:文件长度字符数
%p:该次rsync会话的进程id
%o:操作类型:"send"或"recv"、”del.”
%f:文件名
%P:模块路径
%m:模块名
%t:当前时间
%u:认证的用户名(匿名时是null)
%b:实际传输的字节数
%c:当发送文件时,该字段记录该文件的校验码

下面我们来定义自己的conf文件

# [GLOBAL OPTIONS]

#motd file=/etc/motd
log file=/var/log/rsyncd
# for pid file, do not use /var/run/rsync.pid if
# you are going to run rsync out of the init.d script.
pid file=/var/run/rsyncd.pid
syslog facility=daemon

#socket options=

# [MODULE OPTIONS]

[serverdb]

comment = Server Databases
        path = /home/flow/Documents/db_backup
        use chroot = no
#       max connections=10
        lock file= /var/lock/rsyncd
# the default for read only is yes...
        read only = true
        list = true
        uid = nobody
        gid = nogroup
        exclude = db_backup.sh
#       exclude from = 
#       include = 
#       include from = 
        auth users = liubing
        secrets file = /etc/rsyncd.secrets 
        strict modes = true
        hosts allow = 192.168.1.73
#       hosts deny = 
        ignore errors = true
        ignore nonreadable = true
        transfer logging = true
        log format = %t[%p]: host %h (%a) %o %f (%l bytes). Total %b bytes.
        timeout = 600
        refuse options = checksum dry-run
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz

创建一个密码文件
$sudo vi /etc/rsyncd.secrets
liubing:123456
$sudo chmod 0600 /etc/rsyncd.secrets

启动rsync
sudo /etc/init.d/rsync start

我们再来看一下客户端的操作,一般客户端不需要进行特殊的配置,直接同步即可
$rsync -vzrtopg --progress [email protected]92.168.1.3::serverdb .
password
成功!

我们把这个同步工作交给crontab去执行。首先我们要创建一个密码文件
$sudo vi /etc/rsync.pwd输入123456,保存

!注意:下面这两步操作是必须的
sudo chmod 0600 /etc/rsync.pwd
sudo chown liubing:liubing /etc/rsync.pwd

然后我们打开crontab,加入以下任务
$crontab -e
* */1 * * * rsync -a --password-file=/etc/rsync.pwd [email protected]::serverdb /home/liubing/Documents/db_backup

http://www.php-oa.com/2009/02/25/flock.html

我使用crontab同步一个文件夹时,发现一个问题,我在crontab中设置的1分钟运行一次.但当那个文件夹的内容改变时.1分钟不一定能同步完,但这时第二个rsync进行又起来了.

这个就产生一个问题,二个rsync一起处理相同的文件,这样会出问题.如下


1

1 * * * * /usr/bin/rsync -avlR /data/files    172.16.xxx.xxx:/data

本来想写个脚本来解决,但太麻烦.所以用了个linux下的锁..呵呵,象下面这个.


1

1 * * * * flock -xn /var/run/rsync.lock -c ‘ rsync -avlR /data/files    172.16.xxx.xxx:/data‘

这样,使用flock的-x参数先建一个锁文件,然后-n指定,如果锁存在,就等待.直到建成功锁在会运行-c后面的命令.这样第一个进程没有运行完前,锁文件都会存在.这样就不会二个rsync同时并发处理一个东西了

Ubuntu rsync同步

时间: 2024-11-05 19:08:01

Ubuntu rsync同步的相关文章

Ubuntu下多服务器 Rsync同步镜像服务配置

主服务器:192.168.5.13_ubuntu 从服务器:192.168.5.11_centos ================== 1> 在两台主机上分别安装rsync=================== ubuntu安装如下: # apt-get install rsync 编译安装:下载这个免费的软件 rsync.samba.org/ 或者 samba.anu.edu.au/rsync 去官方网站下载最新的版本 解压缩进目录后执行 #./configure && make

Centos6.5 rsync同步备份

前言:本章主要讲解实现快速.安全.高效的异地备份 实验环境:服务端A 192.168.1.10   客户端B 192.168.1.20 一,安装rsync    yum  -y  install  rsync*   新建配置文件 vi /etc/rsyncd.conf uid = nobody gid = nobody use chroot = yes address = 192.168.1.10 port 873 log file = /var/log/rsyncd.log pid file

rsync同步Nginx日志遇到问题总结

一.目的 将nginx 日志通过普通用户利用rsync公钥认证的方式实时同步到本地服务器上,之后使用elk程序进行处理. 二.遇到问题及解决方法思路 问题1.文件权限:nginx 的日志默认权限如下: [[email protected] ~]# ll /var/log/nginx/access.log -rw-r----- 1 nginx adm 36330 Sep 11 10:26 /var/log/nginx/access.log 我新建的是普通用户,标准的用户组,用rsync同步时,报个

使用rsync同步目录

本文描述了linux下使用rsync单向同步两个机器目录的问题. 使用rsync同步后可以保持目录的一致性(含删除操作). 数据同步方式 从主机拉数据 备机上启动的流程 同步命令: rsync -avzP --delete [email protected]{remoteHost}:{remoteDir} {localDir} 参数说明: -a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意思是拷贝链接文件:-p 表示保持文件原有权限:-t 保持文件原有时间:-g 保持文件原有

rsync同步工具实战

rsync同步工具实战 rsync具有增量同步的功能,相对于cp工具来说,效率比较高:同时可以在本地到本地或本地到远程之间,实现镜像备份 环境:分别有机器:server-178/24,client-b-179/24,client-c-180/24 其中以server-178/24为rsync服务端,client-b-179/24,client-c-180/24为rsync客户端 实战过程: 检查服务端和客户端环境:rpm -aq|grep rsync [[email protected] ~]#

MySQL Ubuntu 主从同步配置

MySQL Ubuntu 主从同步配置 一.在两台Linux机器上安装MySQL 二.Master主服务器配置(192.168.1.3) 1.编辑my.cnf编(命令查找文件位置:find / -name my.cnf) vi /etc/mysql/my.cnf 在[mysqld]中添加: server-id = 1 log_bin = master-bin log_bin_index = master-bin.index binlog_do_db = my_data binlog_ignore

Rsync同步日志服务的搭建

Rsync同步日志服务的搭建 一.Rsync介绍: rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输.rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像对每个目标只需要一次传送.rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝.在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协定或者通过远程shell如RSH或者SSH伺服文件.SSH情况下,rsyn

rsync同步

rsync 远程同步 格式: rsync [OPTION]... SRC DEST rsync [OPTION]... SRC [[email protected]]HOST:DEST     //用户名默认为当前终端的用户 rsync [OPTION]... [[email protected]]HOST:SRC DEST rsync [OPTION]... [[email protected]]HOST::SRC DEST rsync [OPTION]... SRC [[email prot

rsync同步目录

sudo rsync -ave ssh /home/daniel/sc [email protected]:/home/daniel/sc 如果提示无法mkdir,可能是权限的问题 ? 1 sudo chmod 777 /home/daniel/sc rsync同步目录,布布扣,bubuko.com