Linux rsync 文件同步服务器

与传统的cp、scp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。

一、安装rsync

[root@localhost src]# wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz
[root@localhost src]# tar -xf rsync-3.1.3.tar.gz
[root@localhost src]# cd rsync-3.1.3/
[root@localhost rsync-3.1.3]# ./configure --prefix=/usr/local/rsync
[root@localhost rsync-3.1.3]# make && make install

二、配置rsync

rsync服务器端需要两个配置文件:rsyncd.confrsyncd.password

其中rsyncd.conf默认存放在/etc/目录下,同时它也是rsync服务器的主配置文件。该文件配置了rsync服务器的控制认证、访问、日志记录等等。而rsyncd.password主要用于存储rsync用户名和密码。

但是在rsync安装完毕后后是不会生成以上这两个配置文件的,需要我们手工进行创建。

rsync服务端配置

1、服务端rsyncd.conf配置文件内容如下:
uid = root
# `root使用的用户`
gid = root
# `root使用的用户组(用户所在的组)`
user chroot = no
# `如果为true,daemon会在客户端传输文件前“chroot to the path”。这是一种安全配置,因为我们大多数都在内网,所以不配也没关系`
max connections = 200
# `设置最大连接数,默认0,意思无限制,负值为关闭这个模块`
timeout = 600
# `默认为0,表示no timeout,建议300-600(5-10分钟)`
pid file = /var/run/rsyncd.pid
# `rsync daemon启动后将其进程pid写入此文件。如果这个文件存在,rsync不会覆盖该文件,而是会终止`
lock file = /var/run/rsyncd.lock
# `指定lock文件用来支持“max connections”参数,使得总连接数不会超过限制`
log file = /var/run/rsyncd.log
# `不设或者设置错误,rsync会使用rsyslog输出相关日志信息`[backup]
# `这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护`
path = /root/backup/
# `这个模块中,daemon使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题`
ignore errors
# `忽略I/O错误`
read only = no
# `指定客户端是否可以上传文件,默认对所有模块为true`
list = no
# `是否允许客户端可以查看可用模块列表,默认为可以`
hosts allow = 192.168.182.0/255.255.255.0
# `指定可以联系的客户端主机名或和ip地址或地址段,默认情况没有此参数,即都可以连接`
auth users = test
# `指定不可以联系的客户端主机名或ip地址或地址段,默认情况没有此参数,即都可以连接`
secrets file = /etc/rsyncd.password
# `指定用户名和密码存放的文件,格式;用户名;密码,密码不超过8位`

rsync默认是在nobody用户下运行的,但是我们为了以后同步时不为各种权限的事情烦恼,就让其在root用户下运行。

2、创建password文件,并授权
[root@localhost etc]# echo "test:test">>/etc/rsyncd.password

注意:该密码文件中的用户和密码可以进行自定义,同时该用户不一定要在服务器中的系统用户存在。
密码文件创建完毕后,要把其权限要设置为600,否则会在以后同步时提示验证出错。如下:

[root@localhost etc]# chmod 600 /etc/rsyncd.password
3、创建认证模块,并授权

一个rsync配置文件中可以包含多个认证模块,同时一个密码文件中也可以存放多个用户和其对应的密码。其中每一个认证模块可以对应不同的客户端。

以上两个文件创建完毕后,我们来创建其对应的目录并授权,如下:

[root@localhost etc]# mkdir /backup
[root@localhost etc]# chown root:root -R /backup/

以上就是rsync服务器端的配置。


rsync客户端配置

rsync客户端配置与服务器端相比差别还是比较大的。

在客户端安装完毕rsync服务后,是不需要启动rsync服务的。
我们只需要在客户端创建连接rsync服务器时,验证码用户所需要的密码文件即可

该密码文件中的密码要与rsync服务器上的密码文件中的密码对应,并且也要与rsync服务器rsyncd.conf配置文件中的认证模块中的用户匹配。

当然该密码文件不创建也是可以的,不创建的话。我们在执行rsync操作时,就需要输入rsync的对应用户的密码。如下:

[root@localhost etc]# echo "test">>/etc/rsyncd.password
[root@localhost etc]# chmod 600 /etc/rsyncd.password

注意:该密码文件中只能存放一个用户的密码,并且该文件与rsync服务器端的密码文件一样也需要把其权限设置为600。


三、rsync的启动与关闭

启动rsync服务

rsync-daemon认证方式,需要服务器和客户端都安装rsync服务,并且只需要rsync服务器端启动rsync,同时配置rsync配置文件,客户端启动不启动rsync服务。

在此我们只讲解rsync-daemon认证方式的启动。如果是源码方式安装的rsync,我们可以使用rsync –daemon来启动rsync。如下:

[root@localhost ~]# echo PATH=$PATH:/usr/local/bin/>>/etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# rsync --daemon
[root@localhost ~]# ps aux |grep rsync
[root@localhost ~]# netstat -tunlp |grep 873

注意:上述命令行中,只有rsync --daemon才是启动rsync的命令。并且该命令启动时,会默认加载/etc/rsyncd.conf文件。

所以如果rsync的配置文件不在/etc目录下或者rsync配置文件名不为rsyncd.conf,那么我们在启动rsync服务时,就要手工加上该配置文件的完整路径。方法如下:

[root@localhost ~]# rsync --daemon --config=/etc/rsyncd.conf
关闭rsync服务

关闭rsync服务,如果是源码方式安装的,我们可以直接通过pkill rsync命令进行关闭。如下:

[root@localhost ~]# pkill rsync

四、rsync命令参数详解

rsync几个重要参数
  • -v, --verbose详细模式输出。
  • -a, --archive归档模式,表示以递归方式传输文件,并保持所有文件属性不变。
  • -z, --compress对备份的文件在传输时进行压缩处理。
  • –delete:删除那些DST中存在而在SRC中没有的文件。
rsync六种工作模式

这六种模式总体上可以用两个词进行区分:推送、拉取。
推送就是在客户端上执行rsync命令,目的是把客户端需要同步的文件推送到服务器上。
拉取也是在客户端上执行rsync命令,目的是把服务器上的文件拉取到本地。
注意:无论是推送和拉取,rsync命令都是在客户端执行,只是命令的格式不同而已。

  • rsync [OPTION]... SRC [SRC]... DEST
    同步本地文件,从一个目录同步到另外一个目录。
[root@localhost ~]# rsync -avz /data  /backup

表示把本地/data目录下的文件同步到本地/backup目录下。


  • rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
    使用一个远程shell程序(如rsh、ssh)来实现把本地的文件同步到远程机器上。此种方式属于推送方式。
[root@localhost ~]# rsync -avz /data test@192.168.199.247:/backup

表示把本地/data目录下的文件同步到服务器192.168.199.247的/backup目录下。


  • rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST (最常用)
    把本地的文件同步到远程服务器上,其中DEST表示的是rsync服务器的认证模块名。此种方式属于推送方式。
[root@localhost ~]# rsync -avz /data test@192.168.199.247::backup --password-file=/etc/rsyncd.password

表示把本地/data目录下的文件同步到服务器192.168.199.247的backup模块下path路径下。


  • rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
    列出远程机器的文件列表。这类似于ls命令,不过只要在命令中省略掉本地机信息即可。
[root@localhost ~]# rsync -v rsync://test@192.168.199.247/backup

表示在本机列出服务器192.168.199.247的/backup目录下的内容,


  • rsync [OPTION]... [USER@]HOST:SRC [DEST]
    把远程机器的文件同步到本地,此种方式属于拉取方式。
[root@localhost ~]# rsync -avz test@192.168.199.247:/backup /data

表示把192.168.199.247的/backup目录下文件同步到本地/data目录下。


  • rsync [OPTION]... [USER@]HOST::SRC [DEST] (常用)
    把远程机器的文件同步到本地,此种方式属于拉取方式。
[root@localhost ~]# rsync -avz test@192.168.199.247::backup --password-file=/etc/rsyncd.password /data

表示把192.168.199.247的backup模块path路径下的文件同步到本地/data目录下。


五、rsync同步实例

服务端
  • 在/root/backup目录(模板)下创建测试文件
[root@localhost backup]# pwd
/root/backup
[root@localhost backup]# ll
总用量 0
drwxr-xr-x. 2 root root 6 12月 30 18:33 1.txt
drwxr-xr-x. 2 root root 6 12月 30 18:33 2.txt
drwxr-xr-x. 2 root root 6 12月 30 18:33 3.txt
drwxr-xr-x. 2 root root 6 12月 30 18:33 4.txt
客户端
  • 客户端同步服务端文件
[root@localhost backup]# rsync -aP --delete test@192.168.182.129::backup /root/backup --password-file=/etc/rsyncd.password
receiving incremental file list
./0 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=5/7)
1.txt/
2.txt/
3.txt/
4.txt/

六、Rsync+Inotify远程实时同步

192.168.182.129:同步端
192.168.182.130:被同步端,脚本存放处

1、配置rsync ssh免秘钥登录传输
[root@localhost ~]# ssh-keygen   ///创建密钥
回车...
[root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub 192.168.182.130

在提示输入文件密码时,直接按回车,采用空密码


192.168.182.130端

2、安装inotify文件监控

文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步。(可用于代码自动发布)

inotify-tools工具下载

[root@localhost ~]# cd inotify-tools-3.14
[root@localhost inotify-tools-3.14]# ./configure
[root@localhost inotify-tools-3.14]# make
[root@localhost inotify-tools-3.14]# make install
3、调整inotify内核参数
[root@localhost ~]# vim /etc/sysctl.conffs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

使调整inotify内核参数命令立刻生效:sysctl -p

4、编写触发式脚本
#!/bin/sh
src=/root/backup
des=/root/backup
ip=192.168.182.129
inotifywait -mrq -e modify,create,attrib,move,delete ${src} | while read filedofor i in $ipdorsync -aP --delete --password-file=/etc/rsyncd.password $src test@$ip::backupdonedone
5、执行脚本测试
  • 192.168.182.130终端上执行脚本,并创建文件
[root@localhost ~]# ./inotify_rsync.sh
[root@localhost backup]# touch villian.txt
  • 192.168.182.129终端上可同步该文件
[root@localhost backup]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 30 22:39 villian.txt
6、添加开机自动后台自动运行
[root@localhost ~]# vi /etc/profile
/bin/bash /root/inotify_rsync.sh &

视频:https://www.bilibili.com/video/av76832057?p=266

转载至:https://blog.csdn.net/rorntuck7/article/details/86666699
转载至:https://blog.51cto.com/13444271/2113632

运维之道 | Linux rsync 文件同步、Inotify远程实时同步相关推荐

  1. 运维之道 | Linux运维必会的MySQL企业面试题

    Linux运维必会的MySQL企业面试题 基础笔试命令 1.开启MySQL服务 [root@localhost ~]# /etc/init.d/mysqld start [root@localhost ...

  2. 运维27道Linux面试题

    1.解释下什么是GPL,GNU,自由软件? GPL:(通用公共许可证):一种授权,任何人有权取得.修改.重新发布自由软件的权力. GNU:(革奴计划):目标是创建一套完全自由.开放的的操作系统. 自由 ...

  3. Rsync远程同步+inotify监控实时同步概述,部署

    文章目录 一,rsync 概述 1.rsync服务器 2.rsync同步方式 3.rsync特性 二.rsync与cp.scp对比 三,rsync命令 四,rsync 本地复制实例 五,rsync同步 ...

  4. 运维之道 | FTP - Vsftp 文件传输协议

    前言 文件传输协议( file transfer protocol, FTP ),基于该协议 FTP 客户端与服务端可以实现共享文件.上传文件.下载文件. FTP 基于 TCP 协议生成一个虚拟的连接 ...

  5. Linux运维之道-基础命令

    基础命令 参照 linux运维之道(丁明一) 文章目录 基础命令 一.目录以及文件的基本操作 1. pwd 2.cd 3.ls 4.touch 5.mkdir 6.cp 7.rm 8.mv 9.fin ...

  6. linux mk创建文件,Linux运维知识之Linux mkkickstart建立安装的组态文件命令详解

    本文主要向大家介绍了Linux运维知识之Linux mkkickstart建立安装的组态文件命令详解,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 功能说明:建立安装的组态文件 ...

  7. 力作推荐!!!!   防线:企业Linux安全运维理念和实战(向世界500强企业学习Linux安全管理与运维之道)...

    防线:企业Linux安全运维理念和实战(向世界500强企业学习Linux安全管理与运维之道)      新书发售 http://product.dangdang.com/product.aspx?pr ...

  8. centos删除文件不释放_Linux运维知识之linux centos下彻底删除文件 解决删除文件文件夹硬盘空间不释放不减少...

    本文主要向大家介绍了Linux运维知识之linux centos下彻底删除文件 解决删除文件文件夹硬盘空间不释放不减少,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 最近删除一 ...

  9. linux模糊查找子目录,Linux运维知识之linux中模糊查找文件

    本文主要向大家介绍了Linux运维知识之linux中模糊查找文件,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 1.在当前目录下搜索指定文件: find . -name tes ...

最新文章

  1. 模板方法模式与策略模式的区别
  2. 50万+Python 开发者的选择,这本书对零基础真是太太太友好了
  3. 《C#与.NET3.5高级程序设计(第4版)》笔记10
  4. 【Alpha】Daily Scrum Meeting第七次
  5. 到底什么是MiddleWare(中间件),请用plain English描述
  6. 一致性协议raft详解(三):raft中的消息类型
  7. 微信公众平台消息接口开发(2)-封装weixin.class.php
  8. 本期期刊主题:ASP.NET技术与JavaScript技巧,包括控件等
  9. 自己动手写Docker系列 -- 5.5实现容器停止
  10. 视觉SLAM应用(一)------AR发展的理解
  11. 极通首次为中小企业量身定制EWEBS极速版
  12. [软件更新]CuteFTP 8.3.3.0054
  13. unity简单的粒子特效的制作
  14. 双边滤波(Bilateral Filtering)
  15. mac sublime中文乱码问题解决
  16. Moebius中间件
  17. 金山系不惧微软,前有WPS力扛Office,后有eversheet接力再战
  18. 盘点3种Python爬虫 中文乱码 的处理方法
  19. android的apk加壳工具对比
  20. nslookup 包含在那个包中_nslookup详解(name server lookup)( 域名查询)

热门文章

  1. 360safe下载的卡巴斯基到期怎么办?
  2. 使用JS代码禁止某些地区用户访问网站
  3. jupyter notebook 出现Bad file descriptor (C:\ci\zeromq_1602704446950\work\src\epoll.cpp:100)解决方法
  4. UnityShader_足迹沙漠雪地塌陷
  5. 音速战绩查询器v1.04
  6. nbiot:巴法云之M5310-A模块AT指令调试教程
  7. Typora常用LaTex
  8. n76e003引脚图_N76E003手册阅读
  9. 部署支持使用Redis哨兵模式,支持纳管ClickHouse数据库,JumpServer堡垒机v2.28.0发布
  10. 佐美人--arm32/64/openwrt文件系统移植