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
等待了一分钟后,文件成功同步了。

linux 下的 rsync 文件同步的更多相关文章

  1. Linux下实现Rsync目录同步备份

    需求:对于开发机器做目录的数据备份 测试机IP:192.168.1.100   WEB目录:/bckup/ 下面我将用一台机器来备份上面测试机 /bckup下的所有数据,并实现时时同步 备份机器IP: ...

  2. (转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步

    Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80 ...

  3. [转帖]Linux下inotify监控文件夹状态,发生变化后触发rsync同步

    Linux下inotify监控文件夹状态,发生变化后触发rsync同步 https://www.cnblogs.com/fjping0606/p/6114123.html 1.安装工具--inotif ...

  4. (总结)Linux下使用rsync最快速删除海量文件的方法

    昨天遇到了要在Linux下删除海量文件的情况,需要删除数十万个文件.这个是之前的程序写的日志,增长很快,而且没什么用.这个时候,我们常用的删除命令rm -fr * 就不好用了,因为要等待的时间太长.所 ...

  5. (转)Linux下使用rsync最快速删除海量文件的方法

    转自 : http://www.ha97.com/4107.html 昨天遇到了要在Linux下删除海量文件的情况,需要删除数十万个文件.这个是之前的程序写的日志,增长很快,而且没什么用.这个时候,我 ...

  6. Rsync文件同步

    Rsync文件同步 本章结构 关于rsync 1.一款增量备份工具,remote sync,远程同步,支持本地复制或者与其他SSH.rsync主机同步,官方网站:http://rsync.samba. ...

  7. 如何在Linux下使用Rsync

    如何在Linux下使用Rsync 吐槽 昨天对scp进行总结之后看到最后有说到Rsync,俗语有云:好奇心害死猫.抱着学习的态度将Rsync给找了出来,然后进行了一些简单的学习.下面介绍一些个常用的命 ...

  8. Linux下几种文件传输命令

    Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...

  9. [转帖]Linux下主机间文件传输命令

    Linux下主机间文件传输命令 https://yq.aliyun.com/articles/53631?spm=a2c4e.11155435.0.0.580ce8ef4Q9uzs   SCP命令: ...

随机推荐

  1. mysql设置索引

    1.添加PRIMARY KEY(主键索引) 语法:ALTER TABLE `表名` ADD PRIMARY KEY ( `列名称` ) mysql>ALTER TABLE `table_name ...

  2. Scrapyd发布爬虫的工具

    Scrapyd Scrapyd是部署和运行Scrapy.spider的应用程序.它使您能够使用JSON API部署(上传)您的项目并控制其spider. Scrapyd-client Scrapyd- ...

  3. ExtJS 动态组件与组件封装

      介绍几个有用的函数: Ext.apply---追加配置选项Ext.reg,----注册xtypeExt.extend--扩展组件||操作({}|| cfg)fireEvent自定义事件机制 --- ...

  4. CentOS 6.6下Cacti安装部署

    Cacti简介 本章结构 常见平台 常见的服务器监控软件 cacti,流量与性能监测为主----http://www.cacti.net/ nagios,服务与性能监测为主---http://www. ...

  5. png-CRC32校验

    官方文档: https://www.w3.org/TR/PNG-CRCAppendix.html CRC32校验的数据,看原文 A four-byte CRC (Cyclic Redundancy C ...

  6. 代码: 日期和时间 datepicker

    bootstrap 的相关的时间插件 http://www.bootcss.com/p/bootstrap-datetimepicker/ jquery ui的日期插件 http://www.w3cs ...

  7. OpenACC 优化矩阵乘法

    ▶ 按书上的步骤使用不同的导语优化矩阵乘法 ● 所有的代码 #include <iostream> #include <cstdlib> #include <chrono ...

  8. redis详解(三)

    1. 使用redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,li ...

  9. Procedure-Function mysql

    1.基本用法 drop PROCEDURE if EXISTS sp1; -- 如果存在sp1存储过程则删除掉 create PROCEDURE sp1() SELECT 1; --创建最简单的存储过 ...

  10. SpringBoot application.yml文件不生效

    yml格式对缩进有严格的要求,检查你的yml配置文件是否有不合格的缩进项. 正确的格式如下: server: port: 8881 port前必须有空格,  port后的冒号 后面也需要有空格