Linux的rsync远程数据同步工具

Rsync(remote synchronize) 是一个远程数据同步工具,可以使用“Rsync算法”同步本地和远程主机之间的文件。

rsync的好处是只同步两个文件不同的部分,相同的部分不在传递。类似于增量备份, 
这使的在服务器传递备份文件或者同步文件,比起scp工具要省好多时间。 
OS:ubuntu server 10.04 
server:192.168.64.128 
client:192.168.64.145

server

1.ubuntu  server 10.04默认已安装rsync,rsync服务默认不是启动的,我们要修改下面的文件。 
$sudo vi /etc/default/rsync 
RSYNC_ENABLE=true   #false改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文件

# 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 
syslog facility=daemon 
#socket options=

# MODULE OPTIONS

[rsync_bk]

comment = public archive 
        path = /home/rsync_bk                             #指定路径,如果没有这个目录自己建。 
        use chroot = no 
#       max connections=10 
        lock file = /var/lock/rsyncd 
# the default for read only is yes... 
        read only = yes 
        list = yes 
        uid = nobody 
        gid = nogroup 
#       exclude = 
#       exclude from = 
#       include = 
#       include from = 
        auth users = rsync              #rsync连接时的用户名 
        secrets file = /etc/rsyncd.secrets 
        strict modes = yes 
        hosts allow = 192.168.64.145 
#       hosts deny = 
        ignore errors = yes 
        ignore nonreadable = yes 
        transfer logging = yes 
        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

创建一个密码文件 
$sudo vi /etc/rsyncd.secrets 
rsync:123 
$sudo chmod 0600 /etc/rsyncd.secrets    
启动rsync 
sudo /etc/init.d/rsync start 
client 
我们再来看一下客户端的操作,一般客户端不需要进行特殊的配置,直接同步即可 
rsync -vzrtopg --progress [email protected]::rsync_bk .  #.为当前目录,在服务端touch一个文件,同步后就会出现,当然你也可以指定一个位置比如/databk,需注意所建立的权限!

我们把这个同步工作交给crontab去执行。首先我们要创建一个密码文件 
$sudo vi /etc/rsync.pwd输入123,保存     #密码要一致 
!注意:下面这两步操作是必须的,没有足够权限同步就会不成功,ls -l 你所指向的目录 
sudo chmod 0600 /etc/rsync.pwd 
sudo chown 普通用户:普通用户组 /etc/rsync.pwd 
然后我们打开crontab,使它自动同步 
$crontab -e 
* * * * * rsync -a --password-file=/etc/rsync.pwd [email protected]::rsync_bk /databk

crontab随机启动  sudo vi /etc/rc.local

参数说明:

-v verbose,即详细模式

-z 压缩

-r recursive 递归

-topg 保持文件原有属性,一般不用加

--progress 用来显示详细进度情况

--delete 表示如果服务器删除了一个文件,客户端也应对应删除

--exclude="*.sh" 表明不包括某些文件

--password-file=/etc/rsync.pwd 指定所使用的密码文件

最后一项是需要同步的目录

注意指定使用的密码文件中只需要有密码,不要有用户名。

------------------------------------------------------------------------

1.在本地机器上对两个目录同步

$ rsync -zvr filename1 filename2

上述代码是将filename1中的文件与filename2中的文件同步,如果将filename2中的文件同步到filename1中,修改代码为:

$ rsync -zvr filename2 filename1

2.使用rsync –a 同步保留时间按标记

$ rsync -azv filename1 filename2

使用上述命令,将filename2中新同步的文件的时间与filename1中的创建的时间相同,

它保留符号链接、权限、时间标记、用户名及组名相同。

3.从本地同步文件到远程服务器

$rsync -avz filename1 [email protected]:/home/ubuntu/filename2

上述命令是将本地的filename1同步到远程192.168.0.1的主机上。

注意:如果远程主机的端口不是默认的22端口,假如是3000端口,上述的命令修改为,

$ rsync -avz ‘-e ssh -p 4000‘ filename1 [email protected]:/home/ubuntu/filename2

4.将远程服务器的文件同步到本地

与步骤3类似,只是将filename1与远程服务器的位置对换一下,

$rsync -avz [email protected]:/home/ubuntu/filename2 filename1

同理如果端口不是22,使用以下命令

$ rsync -avz ‘-e ssh -p 4000‘ [email protected]:/home/ubuntu/filename2 filename1

时间: 2024-10-21 02:32:01

Linux的rsync远程数据同步工具的相关文章

rsync远程数据同步工具应用

一直觉得rsync这个命令复杂不好用,一直在排斥这个工具,抱怨rsync功能简单又复杂难用,这些都不是rsync的问题,只是我不愿意去man这个工具的的帮助文档,其实rsync这个工具也没有想象中那么复杂难用:rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的"rsync算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快. rsync是一个功能非常强大的工具,其命令

linux之rsync远程数据同步备份

rsync服务是一种高效的远程数据备份的工具,该服务的port号为873, 是Liunx下的一种非独立服务.由xinetd超级服务管理,取代监听873port. 长处: 1.rsync能够利用ssh和ssl远程控制进行连接远程主机进行备份.依赖sshd服务 2,能够实现增量备份,在第一次建立连接时进行完整备份,以后仅仅同步变化的数据 3.能够使用自己的socket来进行同步.能够在服务端设置password限制訪问. 缺点:不能进行实时同步,须要安装lsyncd工具来辅助进行实时同步. 配置步骤

rsync 远程数据同步工具详解

rysnc 命令用法:(OPTION-参数,USER-用户,HOST-IP地址,SRC-复制源位置,DEST-复制目标位置)Shell拉:rsync [OPTION] [[email protected]]HOST:SRC [DEST]rsync拉:rsync [OPTION] [[email protected]]HOST::[MODULE] [DEST]Shell推:rsync [OPTION] SRC [[email protected]]HOST:DESTrsync推:rsync [OP

Windows远程数据同步工具cwRsync

1. cwRsync简介 cwRsync是Rsync在Windows上的实现版本,Rsync通过使用特定算法的文件传输技术,可以在网络上传输只修改了的文件. cwRsync主要用于Windows上的远程文件同步备份和同步,它包含Cygwin DLL和适用Cygwin版本的Rsync两部分. cwRsync分为Server和Client,本文使用的版本为4.1.0,下载地址如下: cwRsyncServer v4.1.0:http://pan.baidu.com/s/1eQpaIVw cwRsyn

Linux系统备份还原工具4(rsync/数据同步工具)

rsync即是能备份系统也是数据同步的工具. 在Jenkins上可以使用rsync结合SSH的免密登录做数据同步和分发.这样一来可以达到部署全命令化,不需要依赖任何插件去实现. 命令参考:http://man.linuxde.net/rsync 说明: rsync命令 是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快. rsy

rsync也可以远程数据同步

rsync简介 rsync(rem ote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件.也可以使用 rsync 同步本地硬盘中的不同目录. rsync是用于替代rcp的一个工具,rsync 使用所谓的 rsync算法进行数据同步,这种算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度非常快. rsync支持大多数的类 Unix 系统,无论是 Linux.Solaris 还是 BSD上 都经过了良好的测试. CentOS系统默认就安

利用rsync进行数据同步

Rsync简介 rsync是一个远程数据同步工具,可通过lan/wan快速同步多台主机间的文件.它使用所谓的"rsync演算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.所以通常可以作为备份工具来使用. 运行rsync server的机器也叫backup server,一个rsync server可同时备份多个client的数据:也可以多个rsync server备份一个client的数据.rsync可以搭配ssh

[CentOS 7系列]远程数据同步

Rsync命令是一个远程数据同步工具,可通过网络快速同步多台主机间的文件.它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息,也可以做增量的拷贝.支持通过ssh方式来传输文件,这样其保密性会非常好.rsync备份主要分为三种方式,一是本地到本地的备份,二是本地到网络的备份,三是网络到本地的备份. ▎命令格式:        Local:  rsync [OPTION...] SRC... [DEST] ##拷贝本地文件.当SRC和DES路径信息都不包含有单个冒号":"

【惊雷】Linux下Rsync的文件同步的配置过程

Rsync的文件同步实现 一.rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,简要的概括就是主机于主机之间的文件目录数据的一个同步. 它的特性如下: 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原来文件的权限.时间.软硬链接等等. 无须特殊权限即可安装. 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件.rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽. 安全:可以使用scp.ssh等