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. Ps操作技巧(快捷键大全)

    一.工具箱(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取) 矩形.椭圆选框工具 [M] 移动工具 [V] 套索.多边形套索.磁性套索 [L] 魔棒工具 [W] 裁剪工具 [C] 切片工 ...

  2. SQL Server 2008 CDC增量变更捕获详解

    1 背景: 随着公司业务的成长,数据量也随之的不断增长.随之而来的问题是在做ETL的时候,时间花费也越来越长.为了节省时间开销,我们只想要更新最新的数据,不想要把公司历年所有的数据都进行处理.这种情况 ...

  3. PreApplicationStartMethodAttribute的使用

    先预备一个类,用于Start时调用 public static class MyPreApplicationStart { public static void RegisterGlobalFilte ...

  4. LRU的理解与Java实现

    简介 LRU(Least Recently Used)直译为"最近最少使用".其实很多老外发明的词直译过来对于我们来说并不是特别好理解,甚至有些词并不在国人的思维模式之内,比如快速 ...

  5. 什么是 web 开发

    什么是 web 开发     这几天因为工作需要,了解了一下Web development 的技术路线,来源自     en.wikipedia.org/wiki/Web_development    ...

  6. leetcode54

    class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) ...

  7. maven下载与配置

    转自:https://www.cnblogs.com/jdys/p/3770534.html 1.访问官网:从maven官网下载maven http://maven.apache.org/downlo ...

  8. delphi android路径 TPath 文件路径,文件管理

    获取Android相关文档路径 delphi 新路径.文件功能 IOUtils单元,文件路径,文件管理 http://docwiki.embarcadero.com/RADStudio/Berlin/ ...

  9. favicon.ico

    favicon.ico 作为网页的图标,被当前的所有浏览器都支持. 可直接放在主目录下,自动加载,也可设置在header中. <link rel="shortcut icon" ...

  10. 【干货】国外程序员整理的 C++ 资源大全(转)

    转zi:http://www.csdn.net/article/2014-10-24/2822269-c++ 关于 C++ 框架.库和资源的一些汇总列表,由 fffaraz发起和维护. 内容包括:标准 ...