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. How to Use vcpkg On Windows

    Introduction If you do any sort of C++ development on Windows, then you know that library/package ma ...

  2. 使用V$SQL_PLAN视图获取曾经执行过的SQL语句执行计划

    通常我们查看SQL语句的执行计划都是通过EXPLAIN PLAN或者AUTOTRACE来完成.但是这些查看方法有一个限制,它们都是人为触发而产生的,无法获得数据库系统中曾经执行过的SQL语句执行计划. ...

  3. Linux火焰图-ubuntu

    关注火焰图非常长的时间了!~~一直未能自己做个火焰图出来.今天小试一把. ubuntu18.04 ssh登陆之后执行命令 安装软件 apt-get install -y linux-cloud-too ...

  4. Solr SchemaXml 一些解读

    The schema.xml file contains all of the details about which fields your documents can contain, and h ...

  5. python中的运算符及表达式及常用内置函数

    知识内容: 1.运算符与表达式 2.for\while初步了解 3.常用内置函数 一.运算符与表达式 python与其他语言一样支持大多数算数运算符.关系运算符.逻辑运算符以及位运算符,并且有和大多数 ...

  6. uva-208-枚举-并查集

    题意: 给你一个图,从1到指点的点有多少种不同的路径,用了并查集剪枝,如果当前节点的根不是指定的节点,直接返回,会超时 time limit了俩次,wa了俩次,PE俩次 #include <io ...

  7. 《GPU高性能编程CUDA实战》附录二 散列表

    ▶ 使用CPU和GPU分别实现散列表 ● CPU方法 #include <stdio.h> #include <time.h> #include "cuda_runt ...

  8. leetcode447

    public class Solution { /// <summary> /// 计算两个点的距离 /// </summary> /// <param name=&qu ...

  9. apache http get 和 post 请求

    1.首先要把jar依赖进项目 <dependency> <groupId>org.apache.httpcomponents</groupId> <artif ...

  10. 机器学习入门-随机森林温度预测-增加样本数据 1.sns.pairplot(画出两个关系的散点图) 2.MAE(平均绝对误差) 3.MAPE(准确率指标)

    在上一个博客中,我们构建了随机森林温度预测的基础模型,并且研究了特征重要性. 在这个博客中,我们将从两方面来研究数据对预测结果的影响 第一方面:特征不变,只增加样本的数据 第二方面:增加特征数,增加样 ...