您的位置:首页 > 运维架构 > Shell

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

2020-01-15 08:57 162 查看

因为知识有些零碎所以认真看,我们还是首先介绍一下什么是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

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

[root@1 ~]# iptables -F

[root@1 ~]# iptables -X

[root@1 ~]# iptables -Z

[root@1 ~]# iptables -L

[root@1 ~]# setenforce 0

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

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

[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 root@192.168.139.20:/root/ #远程被文件传输过去
然后我们切换到服务端看一下

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

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

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

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

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

[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 root@192.168.139.20:/root/ #我们再从客户端尝试一次发现没有了密码这就已经成功了

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

本着作死的节奏,我们删除了这个文档再来一个定时脚本尝试一下
[root@1 ~]# vi copy.sh

#!/bin/bash

scp -r /root/lala/11.txt root@192.168.139.20:/root/

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

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

[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:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

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

  • bash /root/copy.sh 我设置的是每分钟都会去运行一下这个脚本
  • [root@1 ~]# crontab -l #-l:列出该用户的计时器设置;
    • bash /root/copy.sh
  • 定时做好后我们去服务端看一下
    • 点赞
    • 收藏
    • 分享
    • 文章举报
    站内首发文章 邓首长在春天的故事 发布了0 篇原创文章 · 获赞 1 · 访问量 247 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: