首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CentOS下(rsync+crontab)触发式实现服务器间的文件备份同步

CentOS下(rsync+crontab)触发式实现服务器间的文件备份同步

作者头像
泥豆芽儿 MT
发布于 2018-09-11 03:27:01
发布于 2018-09-11 03:27:01
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1333760

背景

  • 随着时间的推移,即便当初再小的项目,如今也变得五脏俱全,尤其是在不断的更新迭代后,代码量和文件数目越来越大,多数又不止使用了一个服务器(负载均衡
  • 此时如果进行功能上线,需要依次上传文件,太过繁杂,而且容易漏传,所以想着找一种方法,只需上传其中的一台服务器,从服务器自动进行数据同步则便捷了许多,于是找到了 rsync 文件备份的支持.

【声明】:文章主要参考来源 -【rsync 实现文件备份同步】,然后根据自己的具体情况进行了实例说明,在此谢谢前辈们的经验指导…

一、概念介绍

(1). 什么是 rsync?

  • rsync 是类 unix系统下的数据镜像备份工具 —— remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。
  • 第一次同步时, rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
  • rsync 是用 “ rsync 算法” 提供了一个客户机和远程文件服务器的文件同步的快速方法

(2). rsync 的一些特性

  1. 能更新整个目录和树和文件系统
  2. 有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等
  3. 对于安装来说,无任何特殊权限要求
  4. 对于多个文件来说,内部流水线减少文件等待的延时
  5. 安全,能用 rsh、ssh 或直接端口做为传输端口,或者 socket 连接
  6. 支持匿名 rsync 同步文件,是理想的镜像工具
  7. 免费啊

二、功能分析

  • 配置此功能,首先明确的是,在角色上,需要服务端和客户端 (1:N)
  • 服务端,主要负责文件的首次上传,更新操作等
  • 客户端,会随着服务端的文件变化进行同步-(下载,更新,删除等) 在操作上,最简单的配置比例为【服务端:客户端 = 1:1】 例如,本次的实际操作中,我配置了一个服务端(IP:192.168.1.160),其中的一个客户端(IP:192.168.1.161),后期添加了另一个客户端(IP:192.168.1.150

三、配置操作【重点】

(1). 服务端配置

①. 安装 rsync

  • 一般当下的 CentOS 系统都默认安装了此软件,建议运行命令 rsync 查看,一般会有如下的界面:
  • 如果没有出现上述界面,可自行安装,如以下命令:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install rsync 

②. 进行配置文件的修改【建议 root 用户下操作

  • rsync 的主要有以下三个配置文件: rsyncd.conf (主配置文件)、rsyncd.secrets (密码文件)、rsyncd.motd ( rysnc 服务器显示信息)
  • 服务器配置文件( /etc/rsyncd.conf ),该文件默认不存在,需要创建它
(1). 依次执行如下命令:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf #创建 rsyncd.conf,这是 rsync 服务器的配置文件
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf #创建软链接
touch /etc/rsyncd/rsyncd.secrets  #创建 rsyncd.secrets ,这是用户密码文件
chmod 600 /etc/rsyncd/rsyncd.secrets  #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为 600, 否则无法备份成功
touch /etc/rsyncd/rsyncd.motd
(2). 修改 rsyncd.conf
  • rsyncd.conf 是 rsync 服务器主要配置文件。以下为我的文件信息,可作参考或进行进一步的修改
  • 如下代码表示,我要备份服务器上的 /server/ftpfile 目录,同时想把 /server/ftpfile/file3 目录排除在外
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Distributed under the terms of the GNU General Public License v2
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help

# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsyncd/rsyncd.secrets
motd file = /etc/rsyncd/rsyncd.motd

port = 873 
#指定运行端口,默认是873,您可以自己指定;
address = 192.168.1.160 
#指定服务端IP地址

# uid = nobody
# gid = nobody

uid = root
gid = root


use chroot = no
read only = yes

#limit access to private LANs
hosts allow=192.168.1.161 192.168.1.150 #以空格分割 客户端IP
hosts deny=*

max connections = 10

#This will give you a separate log file
log file = /var/log/rsync.log

#This will log every file transferred - up to 85,000+ per user, per sync
transfer logging = yes

log format = %t %a %m %f %b
syslog facility = local3
timeout = 300

[ftpfile]
path = /server/ftpfile
list=yes
ignore errors = true
auth users = root
#auth users 是必须在服务器上存在的真实的系统用户,如果你想用多个用户以 “,” 号隔开,比如auth users = moTzxx,root
comment = This is moTzxx-comment
 #提交信息,便于识别
exclude = file3/
#此处表明,同步文件 除去所有的 file3 目录,如果以斜杠开头,则可指定“path = /server/ftpfile”下的任何目录或文件,例如“/file1/file5/re.log”,指的是文件“/server/ftpfile/file1/file5/re.log”
(3). 设定密码文件
  • 密码文件格式很简单,rsyncd.secrets 的内容格式为:user:password
  • 例如,我使用的是 root 账户,密码为 root123,则进行下面的命令:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/rsyncd/rsyncd.secrets

添加信息:root:root123

  • 修改属主和修改权限 (若已经是了,就无需修改了)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chown root.root /etc/rsyncd/rsyncd.secrets  
chmod 600 /etc/rsyncd/rsyncd.secrets    
(4). 设定 rsyncd.motd 文件
  • 它是定义 rysnc 服务器信息的,也就是用户登录信息。比如让用户知道这个服务器是谁提供的等,其实影响并不大,只是为了便于说明
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/rsyncd/rsyncd.motd

自定义添加如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
++++++++++++++++++++++++++++++++++++++++++
      Welcome to moTzxx`s world!
++++++++++++++++++++++++++++++++++++++++++

(2). rsync 服务器启动

  • 在此,只介绍 让 rsync 以服务器模式运行的 daemon 参数方式,详情见附录。
  • 此时为服务端操作(IP:192.168.1.160)
  • 如下依然为【root】 权限下操作

①. 以 root 身份启动 rsync

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/rsync --daemon 
/usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf  #--config用于指定rsyncd.conf的位置,如果在/etc下可以不写

②. 查看相应进程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
lsof -i :873
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
【注:】修改rsync配置后服务器端需要重启
 killall rsync
 rsync --daemon 
 lsof -i :873

③. rsync 服务器和防火墙

注:】如果第二步能获得 873 进程信息,这一步没必要进行操作,本人在开启测试前,就关闭了防火墙undefined

  • Linux 防火墙是用 iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
iptables -L  #查看一下防火墙是不是打开了 873端口
  • 如果你不太懂防火墙的配置,可以先用service iptables stop 将防火墙关掉。当然在生产环境这是很危险的,可千万不要这么做!

(3). 客户端:

①. 安装 rsync:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install rsync 

②. 配置密码文件 rsyncd.secrets

 【注意】:服务器端的密码应该以 user:password 的形式存放明文密码,而客户端的密码只需要以 password 的明文形式保存

 【执行命令】(举例密码为 root123):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo root123> rsyncd.secrets
chmod 600 rsyncd.secrets

③. 主要命令

1). 列出 rsync 服务器上的所提供的同步内容
  • 第一种( 需要密码):
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rsync  --list-only  192.168.1.160::ftpfile 
  • 第二种:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rsync  --list-only  --password-file=/server/rsyncd.secrets 192.168.1.160::ftpfile
2). 文件同步命令
  • 第一种( 需要密码):
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rsync  -avzP  192.168.1.160::ftpfile /server/ftpfile
  • 第二种:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rsync  -avzP  --password-file=/server/rsyncd.secrets 192.168.1.160::ftpfile /server/ftpfile
3). 客户端上的数据要与服务器端完全一致
  • 第一种( 需要密码):
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rsync  -avzP --delete  192.168.1.160::ftpfile /server/ftpfile
  • 第二种:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rsync  -avzP --delete  --password-file=/server/rsyncd.secrets  192.168.1.160::ftpfile /server/ftpfile

表示客户端上的数据要与服务器端完全一致,如果 ftpfile 目录中有服务器上不存在的文件,则删除。最终目的是让 ftpfile 目录上的数据完全与服务器上保持一致;用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除

④. 定时更新 实现方法:

(1). 一种方法:直接在 /etc/crontab 中添加命令
  • 找到 crontab 文件所在位置,根据定时任务配置规范添加信息,以本人为例,在目录/etc/crontab
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/crontab

或者通过 crontab 进行设定 ,执行命令:crontab -e

  • 在后面添加命令(举例,每分钟执行一次文件同步,作为测试)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
*/1 * * * *  rsync  -avzP --password-file=/server/rsyncd.secrets  192.168.1.160::ftpfile /server/ftpfile
(2). 第二种方法:脚本实现
  • 写脚本(名字自定义,相当于一个存放定时任务命令的文件而已)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /server/ftp-update-ftpfile.sh #自定义即可
  • 添加代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
rsync  -avzP --password-file=/server/rsyncd.secrets  192.168.1.160::ftpfile /server/ftpfile
  • 通过 crontab 设定,让这个脚本每 1 分钟(测试)运行一次。执行命令:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
crontab -e
  • 输入以下一行:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
*/1 * * * * /server/ftp-update-ftpfile.sh
(3). 上述方法配置好后,要重启 crond 服务器
  • 执行如下的命令
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
killall crond    #注:杀死crond 服务器的进程;
ps aux |grep crond # 注:查看一下是否被杀死;
/usr/sbin/crond    #注:启动 crond 服务器;
(4). 注意/提醒
  1. 个人发现:
代码语言:txt
AI代码解释
复制
- 使用非脚本命令执行的可行性高,期间测试了好多次,当然也有可能是自己的配置存在问题
- 使用脚本命令,相对而言要方便些,更改脚本文件信息后,不需要每次重启 crond ,当然希望能正确配置,那就再好不过了
- 个人测试而言,脚本命令对于 CentOS6.5 可行,而对于 CentOS7 却不执行建议参考文章 
代码语言:txt
AI代码解释
复制
- [CentOS 6.4 中的 cron 计划任务配置方法](http://www.linuxidc.com/Linux/2015-01/112054.htm)
- [CentOS 设置定时任务执行指定脚本的方法](http://www.jb51.net/article/106528.htm)

附录:

(1). 说明

(2). 参考文章

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年11月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RSync实现文件备份同步
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下: 1、可以镜像保存整个目录树和文件系统。 2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。 3、无须特殊权限即可安装。 4、优化的流程,文件传输效率高。 5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 6、支持匿名传输。 rsync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync] 一、什么是rsync rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。 rsync 包括如下的一些特性: 能更新整个目录和树和文件系统; 有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等; 对于安装来说,无任何特殊权限要求; 对于多个文件来说,内部流水线减少文件等待的延时; 能用rsh、ssh 或直接端口做为传输入端口; 支持匿名rsync 同步文件,是理想的镜像工具; 二、架设rsync服务器 架设rsync 服务器比较简单,写一个配置文件rsyncd.conf 。文件的书写也是有规则的,我们可以参照rsync.samba.org 上的文档来做。当然我们首先要安装好rsync这个软件才行; A、rsync的安装; 获取rsync rysnc的官方网站:http://rsync.samba.org/可以从上面得到最新的版本。目前最新版是3.05。当然,因为rsync是一款如此有用的软件,所以很多Linux的发行版本都将它收录在内了。 软件包安装
Java架构师必看
2021/03/22
1.4K0
rsync配置
链接:https://pan.baidu.com/s/1RbPZ6RntpzF3dJ5HLKkRUQ 提取码:psvm
码客说
2022/11/22
1.5K0
centos下配置rsyncd服务器
为了保证开机时自动启动,需要手动加上面的命令(/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf)加入 /etc/rc.local 文件中 如果服务器开启了防火墙,必须保证端口能穿过防火墙
luxixing
2019/05/29
1K0
centos7 使用rsync 实现文件同步
    创建一个需要定时执行的脚本文件,如:rsyncd.sh脚本:vi  /etc/rsyncd.sh
庞小明
2018/11/29
1.8K0
centos7 使用rsync 实现文件同步
CentOS下(rsync+inotify)监听式实现服务器间的备份实时同步
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/78720072
泥豆芽儿 MT
2018/09/11
2.4K0
CentOS下(rsync+inotify)监听式实现服务器间的备份实时同步
Rsync保持两服务器数据一致
上次数据通过NFS拷贝过去后,只是实验一下,还没有真正迁移,现在两边数据又有不一样的;这次准备用rhel本身的rsync服务保持数据同步
三杯水Plus
2018/11/14
1.9K0
菜鸟实测可用的Centos rsync文件同步配置步骤
本人菜鸟,接触centos系统有一段时间了,但是要搞什么东西还是要全部去网上找教程。很多教程不知道为什么,有的不适合现在的系统,不知道是不是我的VPS的原因。现在整理一个可用的文件同步教程分享给大家。 一、服务器端配置: 执行如下代码: yum -y install xinetd vi /etc/xinetd.d/rsync 如果/etc/xinetd.d/rsync这个文件存在,就把里面的disable = yes改为disable = no 如果不存在,就把下面的内容写进去,然后保存. service
用户2135432
2018/06/04
1.8K0
Linux 双机热备
rsync是一款开源,快速,多功能的可实现增量的本地或远程的数据镜像同步备份的优秀工具。适用于多个平台。从软件名称可以看出来是远程同步的意思(remote sync)可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用。
星哥玩云
2022/09/15
4K0
Linux 双机热备
Linux学习笔记之rsync配置
  Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。 
Jetpropelledsnake21
2019/05/23
1.6K0
CentOS 6.5下rsync服务器安装配置
CentOS 默认以xinetd模式运行rsync,rsync的xinetd配置文件是/etc/xinetd.d/rsync 如果配置rsync以xinetd模式运行,执行如下命令
luxixing
2019/05/28
1.5K0
AIX6.1通过rsync同步到Centos7.6
背景:NBU的catalog日志在/drfile路径下,该日志很重要,记录了每天备份的详细行为,极端情况下,可以通过该日志将NBU恢复到对应某天状态,然后在进行数据恢复(前提是虚拟带库或者物理带库没有被复写)。现将该日志备份至某台Centos7.6。
loong576
2021/09/01
1.1K0
AIX6.1通过rsync同步到Centos7.6
原 rsync配置
测试机器2台 rsync服务器IP:192.168.171.22 客户端IP:192.168.171.134 1、检查是否已经安装rsync rpm -qa | grep rsync 2、安装rsync,xinetd,通过xinetd管理rsync yum -y install rsync xinetd xinetd可选,我这边是直接手动启动的rsync服务 3、检查端口 netstat -an | grep 873 4、rsync随xinetd启动而启动 vi /etc/xinetd.d/rsync
霡霂
2018/06/04
1.5K0
RSYNC 数据同步(欧拉系统)
rsync 是 linux 系统下的数据同步、备份工具。可实现数据全量备份、增量备份、远端数据同步以及本地数据同步。
Kevin song
2023/08/31
5430
RSYNC 数据同步(欧拉系统)
基于daemon模式的rsync同步服务
1.配置rsync服务器(文件提供者) #yum install rsync -y  #vim /etc/xinetd.d/rsync      disable = no #/etc/init.d/xinetd restart  #>touch /etc/rsyncd.conf  #>touch /etc/rsyncd.secrets  #>touch /etc/rsyncd.motd #>vim /etc/rsyncd.conf pid file = /var/run/rsyncd.pid port =
BGBiao
2018/02/26
7130
rsync + sersync 数据同步 -- CentOS 8
rsync 是 linux 系统下的数据镜像备份工具。使用快速增量备份工具 Remote Sync 可以远程同步,支持本地复制,或者与其他 SSH、rsync 主机同步。
Kevin song
2020/07/16
1.6K0
rsync + sersync 数据同步 -- CentOS 8
使用 inotify 和 rsync 实现文件实时同步
在生产中有一种需求是,当目录下的文件数据发生变化时,就将数据备份到备份服务器上。实现这样的需求需要做到以下两点:
:Darwin
2023/07/05
2K0
AIX环境下文件远程传输复制工具--rsync安装测试
  rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
loong576
2019/10/28
2.6K0
AIX环境下文件远程传输复制工具--rsync安装测试
001.Rsync简介及使用
Rsync是Linux系统中的数据镜像备份工具,通过rsync可以将本地系统数据通过网络备份到任何远程主机上。rysnc不仅仅能对不同位置的文件和目录进行同步,还可以差异计算,压缩传输文件来最小化数据传输,和cp命令相比,rysnc的优势在于高效的差异算法。并且,rysnc还支持网络数据传输,在复制文件的同时,会把源端与目的端的文件进行比较,只有当文件不一样的时候在进行复制。具有以下特性:
木二
2019/07/26
6370
001.Rsync简介及使用
rsync - Linux下进行文件同步命令
rsync是Linux下进行文件同步到一个命令,可以同步两台计算机到文件与目录,利用查找文件中到不同块以减少数据传输。也可以在一台电脑到不同目录间同步,比如可以写个简单到脚本,将系统中你到一些配置文件备份到一个 dotfiles 文件夹,上传到 GitHub 以便以后新的电脑或系统再利用 rsync 回复这些配置文件,这是很方便自动化的(我就是这么干的 dotfiles)。 rsync的基本用法 $ rsync [options] src dest 1、目的端和源端文件内容不同,触发同步 2、rsync不
小小科
2018/05/02
8.5K0
linux下rsync+inotify实时同步
1、在A、B、C三台机器上分别执行yum -y install rsync xinetd
dogfei
2020/07/31
1.1K0
相关推荐
RSync实现文件备份同步
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入[游戏服务器] 腾讯云官方交流站
游戏服运维小技巧 常见问题齐排查
加入数据技术趋势交流群
大数据技术前瞻 数据驱动业务实践
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档