当前位置: 首页 > news >正文

linux 下的 rsync 文件同步

rsync是linux下的一款快速增量备份工具Remote Sync,是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。rsync是用 “rsync 算法”提供了客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好。
 
一、获取rsync源码
http://rsync.samba.org/download.html
如:rsync-3.1.2.tar.gz
 
二、安装rsync
> tar -zxf rsync-3.1.2.tar.gz
> cd rsync-3.1.2
> ./configure --prefix=/data/rsync
> make && make install
三、rsync的配置
rsync主要有三个配置文件:
1、rsyncd.conf(主配置文件)
3、rsyncd.secrets(密码文件)
3、rsyncd.motd(rysnc服务器信息)
分别创建如下文件
> touch /etc/rsyncd.conf
> touch /etc/rsyncd.secrets
> chmod 600 /etc/rsyncd.secrets
> touch /etc/rsyncd.motd
修改上面创建的文件
> vi /etc/rsyncd.conf
#PID文件路径
pid file = /data/rsync/rsyncd.pid
#锁文件路径
lock file = /data/rsync/rsyncd.lock
#服务器日志文件路径
log file = /data/rsync/log/rsyncd.log
#端口
port = 873
#IP地址
address = 192.168.1.10
#运行RSYNC守护进程的用户
uid = root
#运行RSYNC守护进程的组
gid = root
#使用chroot
use chroot = yes
#最大连接数为5
max connections = 5
#motd文件路径
motd file = /etc/rsyncd.motd

#传输文件的日志
transfer logging = yes
#日志文件格式
log format = %t %a %m %f %b
#指定rsync发送日志消息给syslog时的消息级别。
syslog facility = local3
timeout = 300

#模块是定义服务器哪个目录要被同步
#每个模块都要以[name]形式定义
[backup]
#镜像目录,不可缺少
path = /data/backup
#允许列文件
list=yes
#可以忽略一些无关的IO错误
ignore errors
#认证的用户
auth users = test
#密码文件路径
secrets file = /etc/rsyncd.secrets
#注释
comment = backup data
#排除/data/backup下的指定文件
exclude = test1/ test2/
#允许主机
hosts allow = 192.168.1.10 127.0.0.1
#禁止主机
hosts deny = *
(*如果自定义了日志文件路径,请手动创建log目录,并给予必要的权限)
 
修改配置密码文件
> vi /etc/rsyncd.secrets
格式为: 用户名:密码
test:123456
(*出于安全考虑,我们把rsyncd.secrets权限设为600,注意这里的用户名和密码并不一定是系统的用户和密码,为了安全可以自已设置)
 
修改服务器欢迎信息
> vi /etc/rsyncd.motd
++++++++++++++++++++++++++++++++++
welcome to use the rsync services!
++++++++++++++++++++++++++++++++++
四、rsync基本操作
启动rsync服务
(1)以--daemon方式启动服务
> /data/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
(2)通过xinetd的方式
查看rsync服务是否启动
> ps -ef|grep rsync
> netstat -anlp|grep 873
(*如果没有正常启动,请查看日志文件)
bind() failed: Cannot assign requested address (address-family 2)
2016/04/15 13:37:21 [14946] unable to bind any inbound sockets on port 873
2016/04/15 13:37:21 [14946] rsync error: error in socket IO (code 10) at socket.c(555) [Receiver=3.1.2]
如果出现如上信息,则需要把rsyncd.conf中的address改为127.0.0.1。
 
五、客户端配置与文件同步
客户端rsync的配置与服务器端基本相同,这里就不过多描述了。
> yum -y install rsync
我这里就只在本机演示了
> /data/rsync/bin/rsync -avzP test@127.0.0.1::backup /data/backup2
上述命令的意思是用test用户登陆到127.0.0.1的rsync服务器上,把backup数据同步到本地的/data/backup2目录下。
-a 参数,相当于-rlptgoD;
-r 是递归;
-l 是链接文件,意思是拷贝链接文件;
-p 表示保持文件原有权限;
-t 保持文件原有时间;
-g 保持文件原有用户组;
-o 保持文件原有属主;
-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系;

--progress 是指显示出详细的进度情况
--delete 是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
--password-file=/password/path/file 来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
> /data/rsync/bin/rsync -avzP --delete test@127.0.0.1::backup /data/backup2
> /data/rsync/bin/rsync -avzP --password-file=/data/rsync.pwd test@127.0.0.1::backup /data/backup2
/data/rsync.pwd用来存储客户端用test用户登陆服务器时需要的密码
> echo "123456" > /data/rsync.pwd
> chmod 600 /data/rsync.pwd
六、客户端自动与服务器进行文件同步
通过创建定时任务来完成同步
> crontab -e

* * * * * /data/rsync/bin/rsync -avzP --delete --password-file=/data/rsync.pwd test@127.0.0.1::backup /data/backup2
表示每分钟执行一次命令
> killall crond
> /usr/sbin/crond
杀死crond进程,再重新启动
 
我们通过在/data/backup下创建新的文件,看看是否会同步到backup2目录下。
> cd /data/backup/
> echo "test..." > test.txt
> cd /data/backup2/
> ls
等待了一分钟后,文件成功同步了。

转载于:https://www.cnblogs.com/jkko123/p/6294577.html

相关文章:

  • Redis---Sorted-Sets数据类型操作
  • 闭包的好处罗列
  • Knuth-Morris-Pratt Algorithm
  • cas记录
  • spring事物的传播行为及隔离
  • 华为通报 6 名前中高层被抓疑泄露资料给乐视酷派
  • linux cp/scp命令+scp命令详解
  • 在Spring Boot中使用Spring Retry
  • 用C#开发Windows服务监控系统使用
  • 8VC Venture Cup 2017 - Elimination Round - A
  • PostgreSQL SystemTap on Linux
  • Java 操作XML,JDOMDOM4J
  • React怎么创建.babelrc文件
  • JavaSE 学习参考:switch语句
  • Git使用技巧(1)-- 配置【持续更新】
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Android系统模拟器绘制实现概述
  • gcc介绍及安装
  • Golang-长连接-状态推送
  • maven工程打包jar以及java jar命令的classpath使用
  • mysql外键的使用
  • Octave 入门
  • React16时代,该用什么姿势写 React ?
  • Vue2.0 实现互斥
  • 搭建gitbook 和 访问权限认证
  • 和 || 运算
  • 数据科学 第 3 章 11 字符串处理
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 终端用户监控:真实用户监控还是模拟监控?
  • ionic异常记录
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​如何防止网络攻击?
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • $.ajax()方法详解
  • $.ajax中的eval及dataType
  • ${factoryList }后面有空格不影响
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (附源码)ssm码农论坛 毕业设计 231126
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (转)关于pipe()的详细解析
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .Net - 类的介绍
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 获取url的方法
  • .net6Api后台+uniapp导出Excel
  • .NET关于 跳过SSL中遇到的问题
  • .pyc文件是什么?
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @ConditionalOnProperty注解使用说明