rsync+shell脚本完成自动化备份

因为知识有些零碎所以认真看,我们还是首先介绍一下什么是rsync

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。Rsync其实是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项。 

它的特性如下:

可以镜像保存整个目录树和文件系统。

可以很容易做到保持原来文件的权限、时间、软硬链接等等。

无须特殊权限即可安装。

快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

支持匿名传输,以方便进行网站镜象。

准备阶段:(客户端和服务端)

[root@1 ~]# cat /etc/redhat-release         #查看系统版本

CentOS Linux release 7.2.1511 (Core)

[root@1 ~]# uname -r                            #查看系统内核版本

3.10.0-327.el7.x86_64

[root@1 ~]# uname -m                           #查看系统是否64位

x86_64

rsync+shell脚本完成自动化备份_第1张图片

首先我们还是做服务之前先把奇葩的防火墙给关掉,因为很多规则会撞到墙,注意是服务端和客户端都要做这个操作

[root@1 ~]# iptables -F

[root@1 ~]# iptables -X

[root@1 ~]# iptables -Z

[root@1 ~]# iptables -L    

[root@1 ~]# setenforce 0

rsync+shell脚本完成自动化备份_第2张图片

[root@1 ~]#vi /etc/sysconfig/selinux               #修改SELINUX

rsync+shell脚本完成自动化备份_第3张图片

首先两个虚拟机,一个是客户端一个是服务端

[root@1 ~]# yum -y install rsync              #安装rsync服务

[root@1 ~]# systemctl start rsyncd.service

[root@1 ~]# systemctl enable rsyncd.service

[root@1 ~]# netstat -lnp|grep 873            #检查是否已经成功启动

[root@1 lala]# vi /root/lala/11.txt              #为了测试我创建了一个TxT记事本

[root@1 lala]# scp -r /root/lala/11.txt [email protected]:/root/       #远程被文件传输过去

然后我们切换到服务端看一下

然后我们把服务端这个txt文件给删除,我们再用一种不需要密码的方式来进行传输。

[root@02 ~]# rm -rfv 11.txt

为了让两个linux机器之间使用ssh不需要用户名和密码。所以采用了数字签名RSA或者DSA来完成这个操作。客户端和服务端都要进行接下来的步骤

[root@1 ~]# ssh-keygen            #客户端生成密钥

[root@2 ~]# ssh-keygen            #服务端生成密钥

rsync+shell脚本完成自动化备份_第4张图片

[root@1 ~]# cat /root/.ssh/id_rsa.pub

[root@2 ~]# cat /root/.ssh/id_rsa.pub

两个节点都执行操作:#ssh-keygen然后全部回车,采用默认值.

[root@1 ~]# vi /root/.ssh/authorized_keys

[root@1 ~]# vi /root/.ssh/authorized_keys

[root@1 ~]# scp -r /root/lala/11.txt [email protected]:/root/          #我们再从客户端尝试一次发现没有了密码这就已经成功了

回到服务端发现文档已经传过来了

本着作死的节奏,我们删除了这个文档再来一个定时脚本尝试一下

[root@1 ~]# vi copy.sh

#!/bin/bash

scp -r /root/lala/11.txt [email protected]:/root/

[root@1 ~]# cat copy.sh                   #我们看一下脚本的权限

[root@1 ~]# chmod 777 copy.sh       #感觉权限有点低,给它一个权限。

rsync+shell脚本完成自动化备份_第5张图片

[root@1 ~]# ./copy.sh         #首先测试一下脚本看看好用不

[root@02 ~]# ls                  #发现已经有txt了

定时脚本就涉及到一个目录crontab,还是先介绍一下crontab文件的含义:

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command

其中:

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

rsync+shell脚本完成自动化备份_第6张图片

[root@1 ~]# crontab -e                    #编辑该用户的计时器设置;

* * * * *  bash /root/copy.sh      我设置的是每分钟都会去运行一下这个脚本

[root@1 ~]# crontab -l                     #-l:列出该用户的计时器设置;

* * * * *  bash /root/copy.sh

定时做好后我们去服务端看一下

果真做好了,大功告成

 

 

 

 

你可能感兴趣的:(rsync+shell脚本完成自动化备份)