Linux远程自动备份、同步数据(rsync)

一、安装数据备份工具rsync

  • rsync不仅可以远程同步数据(类似于scp),还可以本地同步数据(类似于cp),但不同于cp或scp的一点是,rsync不像cp/scp一样会覆盖以前的数据(如果数据已经存在),它会先判断已经存在的数据和新数据有什么不同,只有不同时才会把不同的部分覆盖掉。

1、查询是否安装rsync,如果未安装,则运行命令安装rsync服务。

rpm -qa  |grep  rsync
yum remove   -y  rsync
yum install -y  rsync

2、编辑/etc/selinux/config,关闭selinux。

vi  /etc/selinux/config

SELINUX=disabled

getenforce

3、查看iptables相关规则,设置iptables,插入一条规则,保存至/etc/sysconfig/iptables文件,重启iptables防火墙。

iptables  -L
iptables -I INPUT -p tcp  --dport 873 -j ACCEPT
service iptables save
service iptables restart

4、安装超级守护进程xinetd,设置开机启动。

yum install xinetd -y

5、编辑/etc/xinetd.d/rsync文件将"disable = yes" 修改为 “disable = no”,使rsync服务随xinetd启动而启动。

vi   /etc/xinetd.d/rsync

sed -i 's#yes#no#g' /etc/xinetd.d/rsync

6、启动xinetd服务。

service  xinetd  start

7、查看rsync服务是否启动,启动成功可监听到873端口。

netstat  -lnp  |grep  873

二、rsync命令和参数说明

rsync的命令格式说明
rsync [OPTION] SRC DEST本地目录同步,不加’[user@]host’ 默认指的是root 。
rsync [OPTION] SRC [USER@]HOST:DEST从本地目录同步数据到远程目录。(以ssh方式登录远程主机,可用密码也可用密钥)。
rsync [OPTION] [USER@]HOST:SRC DEST从远程目录同步数据到本地目录。(以ssh方式登录远程主机,可用密码也可用密钥)。
rsync [OPTION] [USER@]HOST::SRC DEST从远程目录同步数据到本地目录,’::'表示验证方式不同(通过rsync daemon方式登录)。
rsync [OPTION] SRC [USER@]HOST::DEST从本地目录同步数据到远程目录,’::'表示验证方式不同(通过rsync daemon方式登录)。
rsync常用选项说明
-a归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD ,-a选项后面可以跟一个 --no-OPTION, 这个表示关闭-rlptgoD中的某一个例如 -a --no-l 等同于-rptgoD。
-r对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项。
-v打印一些信息出来,比如速率,文件数量等。
-l保留软链结。
-L向对待常规文件一样处理软链结,如果是SRC中有软连接文件,则加上该选项后将会把软连接指向的目标文件拷贝到DEST。
-p保持文件权限。
-o保持文件属主信息。
-g保持文件属组信息。
-D保持设备文件信息。
-t保持文件时间信息。
–delete删除DST中SRC没有的文件。
–exclude=PATTERN指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt)。
–progress同步的过程中显示同步过程的状态,如统计同步的文件数量、同步文件传输的速度。
-u把DST中比SRC还新的文件排除掉,不会覆盖。
常用命令示例说明
rsync -a dict1/ dict2/将dict1目录内容复制到dict2目录,目录名后面一定要加斜杠,’-a’选项等同于’-rlptgoD’。
rsync -av --no-l dict1/ dict2/将dict1目录内容复制到dict2目录,不复制软连接文件,’-l’表示只复制软连接文件,但软连接文件指向的目标文件却不会复制。
rsync -avL dict1/ dict2/将dict1目录内容复制到dict2目录,复制SRC中软连接文件所指向的目标文件到DEST目录。
rsync -av --delete dict1/ dict2/将dict1目录内容复制到dict2目录,并将DEST中有而SRC中没有的文件删除。
rsync -av --exclude="*.txt" dict1/ dict2/将dict1目录内容(除了"*.txt"文件)复制到dict2目录。
rsync -avL dict1/ root@192.168.1.80:/root/dict2/将dict1目录内容复制到以root账号登陆的192.168.1.80远程主机的/root/dict2/目录。
rsync -avL root@192.168.1.80:/root/VMwareTools.tar.gz Users/xue/Desktop/以root账号登陆的192.168.1.80远程主机并把/root/目录下的VMwareTools.tar.gz文件复制到本地桌面。

三、使用ssh方式设置免密远程登录和备份

  • A计算机同B计算机免密登录备份设置思路:A计算机root用户登陆,使用命令’ssh-keygen -t rsa '生成密钥对,则将A计算机的公钥放入B计算机的authorized_keys文件中,A计算机以后就可以免密登录备份B计算机。B计算机免密登录备份A计算机具体思路同上。

1、A计算机root用户登陆生成密钥对(用rsa加密算法生成密钥对,也可用dsa加密算法)。

ssh-keygen -t rsa

2、一路回车(不设置密钥对存放路径和私钥密码,默认即可)。

3、查看A计算机生成密钥对。

cd /root/.ssh
ls

4、将A计算机公钥追加到文件authorized_keys里,更改文件权限。

cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys

5、将A计算机文件authorized_keys复制到远程主机B计算机/root/.ssh目录里。

scp authorized_keys root@192.168.1.80:/root/.ssh

rsync 	-avL    authorized_keys	  root@192.168.1.80:/root/.ssh

6、A计算机再次登陆B计算机,无需输密码即可远程进入系统,备份文件也无需输入密码。

ssh root@192.168.1.80
rsync -avL   test@192.168.1.120::test/     /tmp/test

四、以后台服务的方式实现远程备份

  • 设置思路:A计算机设置为远程rsync服务器,B计算机作为客户端连接A远程rsync服务器。

  • 设置远程服务器,启动rsync服务(IP:192.168.1.120)

1、编辑/etc/rsyncd.conf配置文件如下图,设置远程rsync服务器,创建备份数据文件夹/root/test,创建测试数据 /root/test/1.txt。

vi  /etc/rsyncd.conf
mkdir /root/test
touch /root/test/1.txt
echo  "rsync  server  test "  > /root/test/1.txt
cat  /root/test/1.txt

在这里插入图片描述

2、上图的 port,log file,pid file,address都属于全局配置。[]内的test是模块名,属于模块配置。一个配置文件可以有多个不同模块。

配置参数说明
port指定哪个端口启动rsync服务,默认为873。
log file指定日志文件,rsyncd服务启动后系统创建。
pid file指定pid文件,rsyncd服务启动后系统创建。这个服务的作用涉及服务的启动停止等进程操作。
address指定启动rsync服务的IP,假如你的主机有多个ip,不指定ip的话就默认在全部ip上启动。
[ ]指定模块名。
path指定远程rsync服务器传送数据存放的路径。
use chroot=true默认值是true,但是如果你的文件中有软链接,建设设置为false。设置为true的优点是提高了安全性,但是缺点是需要root权限,并且不能备份指向外部的软链接
max connections=4指定最大的连接数,默认是0即无限制。这里的连接数指的是允许多少台主机同时连接服务器。
read only=false如果为true,则不能上传的该模块指定的路径下。
list=false表示当用户查询该服务器上的可用模块时,模块是否被列出。设定为true则列出,会有一定的危险性,所以设为false则隐藏,更安全。
uid gid指定在传输时以哪个用户和用户组的身份传输。
auth users指定传输时需要使用的用户名。
secrets file指定密码文件,该参数连同上面的auth users如果不指定,则不使用密码验证。该文件的权限一定要是600。
host allow表示被允许连接该模块的主机,可以是ip或者网段,如果是多个,中间用空格隔开。

3、配置secrets file参数项,编辑/etc/rsyncd.passwd文件,输入内容test:test123,保存后设置权限为600。

 vi   /etc/rsyncd.passwd
 chmod   600   /etc/rsyncd.passwd

4、启动rsyncd服务。

service  xinetd  start

rsync  --daemon  --config=/etc/rsyncd.conf

5、查看服务是否启动,启动成功可监听到873端口。

netstat  -lnp  |grep  873

在这里插入图片描述

  • rsync客户端测试一密码验证通过后备份数据

1、运行如下命令,输入密码"test123",备份远程服务器数据,测试过程如下。

rsync -avL   test@192.168.1.120::test/     /tmp/test

在这里插入图片描述

  • rsync客户端测试二无需输入密码即可备份数据

无需输入密码备份方法一

1、rsync客户端编辑一个密码文件/etc/passsecret,加入test密码“test23”,保存文件修改权限600。

vi   /etc/passsecret
chmod   600    /etc/passsecret

2、输入如下命令即可备份数据,备份过程如下图。

rsync -avL   test@192.168.1.120::test/     /tmp/test/   --password-file=/etc/passsecret

在这里插入图片描述
无需输入密码备份方法二
1、在rsync服务端,注释配置文件中auth users和secrets file这两项参数即可,配置立即生效,无需重启rsync服务,此时默认以root账户身份备份。

vi  /etc/rsyncd.conf

2、输入如下命令即可备份数据,备份过程如下图。

 rsync -avL   192.168.1.120::test/     /tmp/test/

在这里插入图片描述

五、使用计划任务定时自动同步远程数据

1、如果需要客户端上的数据与服务器端完全一致,加入 “–delete” 选项即可。

rsync -avL  --delete  test@192.168.1.120::test/     /tmp/test/   --password-file=/etc/passsecret

2、客户端创建备份数据命令脚本文件,添加内容如下图。

vi   /root/update-bak.sh

#!/bin/bash
#bakup
rsync -avL --delete test@192.168.1.120::test/ /tmp/test/ --password-file=/etc/passsecret

在这里插入图片描述
3、安装crond服务。

yum install -y crontabs

4、启动crond服务。

service	crond start	

5、查看crond服务状态。

service crond status	

6、通过设定crontab,加入内容"*/1 * * * * /root/update-bak.sh",让 /root/update-bak.sh这个脚本每 1 分钟运行一次。

crontab -e

*/1 * * * * /root/update-bak.sh

7、配置完成后,重启crond 服务。

service  crond   restart

8、远程自动同步测试步骤如下图。
在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值