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 rsync@192.168.64.128::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 rsync@192.168.64.128::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 ubuntu@192.168.0.1:/home/ubuntu/filename2

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

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

$ rsync -avz '-e ssh -p 4000' filename1 ubuntu@192.168.0.1:/home/ubuntu/filename2

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

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

$rsync -avz ubuntu@192.168.0.1:/home/ubuntu/filename2 filename1

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

$ rsync -avz '-e ssh -p 4000' ubuntu@192.168.0.1:/home/ubuntu/filename2 filename1

转载于:https://blog.51cto.com/zhaoshilei/1890034

Linux的rsync远程数据同步工具相关推荐

  1. rsync远程数据同步工具

    一.简介 1.认识 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"Rsync算法"来 ...

  2. rsync远程数据同步工具的使用

    准备工作 虚拟机1: 192.168.24.41, 用于搭建rsync服务器  虚拟机2: 192.168.26.68, 用于搭建rsync客户端  虚拟机1和虚拟机2均为centos7; 1. 检查 ...

  3. Linux 命令之 rsync -- 远程数据同步工具

    没有时间整理,暂时参考这里:https://tool.lu/command/detail.html?name=rsync

  4. Linux之Rsync+inotify数据同步

    rsync远程同步 rsync(Remote Sync): 是一款开源,快速,多功能的可实现本地或远程主机数据同步与增量备份的优秀工具.(数据同步与备份的工具)可使本地主机不同分区或目录之间及本地和远 ...

  5. Linux rsync远程文件同步工具:只对差异文件进行更新

    介绍 安装 yum -y install rsync #启动rsync服务 #systemctl start rsyncd.service #systemctl enable rsyncd.servi ...

  6. 【Linux】Rsync远程同步及备份工具(Rsync简介、Rsync安装、rsync认证方式)

    一.Rsync简介 rsync(Remote synchronization)是Liunx/Unix下的一个远程数据同步工具. 它可通过LAN/WAN(局域网/广域网)快速同步多台主机间的文件和目录, ...

  7. linux运维笔记:Rsync数据同步工具

    linux运维笔记:Rsync数据同步工具 1-Rsync简介 Rsync英文全称是Remote synchronization,Rsync具有可以使本地和远程两台主机之间的数据快速复制和同步镜像.远 ...

  8. Linux实战教学笔记21:Rsync数据同步工具

    原文地址:https://www.cnblogs.com/chensiqiqi/p/6514315.html 目录 第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsy ...

  9. 【基础】:Rsync数据同步工具

    第二十一节 Rsync数据同步工具 1.1 Rsync介绍 1.1.1 什么是Rsync? 1.1.2 Rsync简介 1.3 Rsync的特性 1.1.4 Rsync的企业工作场景说明 1.2 Rs ...

最新文章

  1. nginx 反向代理负载均衡 tomcat集群应用
  2. 【php7扩展开发一】注册一个内部函数hello world
  3. python中使用pickle进行序列化
  4. NET问答: 如何将十六进制的 #FFDFD991 转成 C# 中的 Color 类?
  5. 参与就有1000块,30W奖池你占一半 | 帆软开发者大赛招募
  6. 火狐浏览器走局域网中的代理ip
  7. c语言文件名错误的是,C语言程序错误,不能正常读写文件,求解啊
  8. 单片机 防破解 技术论述
  9. 为移动硬盘(硬盘盒)安装linux(傻瓜式,简单,高效)
  10. 审计专业毕业论文有什么好写一点的论文选题吗?
  11. L2十档行情逐笔成交数据实战技巧
  12. OSPF区域划分和区域间路由(三类LSA)
  13. 阿里云服务器ECS(VPS)介绍及使用视频教程和优惠活动
  14. 服务端开发框架及技术(转)
  15. Java6面向对象编程创建一个矩形类, 求周长 面积
  16. 卡路里与脂肪重量的换算
  17. 辨别支付宝各种支付场景
  18. 机器学习-无监督学习-聚类:聚类方法(二)--- 基于密度的聚类算法【DBSCAN文本聚类算法,密度最大值文本聚类算法】
  19. discuz插件 inc.php,discuz的插件是怎么操作数据库的?
  20. 利用python进行数据分析_从删库到跑路

热门文章

  1. android自定义属性dimen,android代码里的dimen
  2. .实现 linkedlist 类java_面试官:兄弟,说说 ArrayList 和 LinkedList 有什么区别
  3. 科大讯飞ai研究院_科大讯飞1024开发者大会:让AI赋能行业数字化升级
  4. matlab字母随机排列,matlab实现1n整数的一个随机排列
  5. python 一行_一行 Python 代码搞定炫酷可视化
  6. linux文件 内存映射 锁,linux – mmap:将映射文件立即加载到内存中吗?
  7. HTML鼠标悬停图片置顶,jquery实现鼠标悬浮停止轮播特效
  8. c语言如何用双重循环去重,c语言中一个一维数组怎样去重?
  9. opencv 腐蚀 matlab,Opencv3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换...
  10. java线程同步的死锁_Java基础之线程5-线程同步死锁