这两天公司新上了三台服务器,组长直接甩给我负责了,从安装系统到后面的维护,前天下个任务给我,让我做个全盘备份的定时任务,问了一下我们组前辈,任务完成得挺好,现在做个记录。

一、备份脚本

#!/bin/sh
# 备份全盘文件到/backup下,每天新建一个以当前日期为文件名的文件夹存储每天的备份内容。

date_today=`date +%Y%m%d`

mkdir /backup/${date_today}

#cp -r /bin  /backup/${date_today}/
# /bin、/lib、/lib64和/sbin都是链接到/usr里的
/usr/bin/cp -rf /boot  /backup/${date_today}/
echo 'boot-OK'
/usr/bin/cp -rf /etc  /backup/${date_today}/
echo 'etc-OK'
/usr/bin/cp -rf /home  /backup/${date_today}/
echo 'home-OK'
#cp -r /lib  /backup/${date_today}/
#cp -r /lib64 /backup/${date_today}/
/usr/bin/cp -rf /media /backup/${date_today}/
echo 'media-OK'
/usr/bin/cp -rf /mnt /backup/${date_today}/
echo 'mnt-OK'
/usr/bin/cp -rf /opt /backup/${date_today}/
echo 'opt-OK'
/usr/bin/cp -rf /root /backup/${date_today}/
echo 'root-OK'
/usr/bin/cp -rf /run /backup/${date_today}/
echo 'run-OK'
#cp -r /sbin /backup/${date_today}/
/usr/bin/cp -rf /srv /backup/${date_today}/
echo 'srv-OK'
#cp -rf /sys /backup/${date_today}/   备份sys的时候报了权限不足,想了想sys不备份也行,直接注释了。
/usr/bin/cp -rf /tftpboot /backup/${date_today}/
echo 'tftpboot-OK'
/usr/bin/cp -rf /tmp /backup/${date_today}/
echo 'tmp-OK'
/usr/bin/cp -rf /usr /backup/${date_today}/
echo 'usr-OK'
/usr/bin/cp -rf /var /backup/${date_today}/
echo 'var-OK'
/usr/bin/cp -rf /zookeeper.out /backup/${date_today}/
echo 'zookeeper-OK'

#tar -zcPvf /backup/$(date_today}$(date +%Y%m%d).tar.gz  /backup
#本来想压缩的,后来算算被我拿来做备份盘的磁盘两个T,不压了。
#rm -rf  /bbackup/${date_today}

find /backup -mtime +7  -exec rm -rf {} \;
[ $? -eq 0 ]&&echo 'ok'||echo 'fail'
#删除7天前的备份,备份成功返回一个ok。

二、挂载硬盘

操作的时候是在物理机上操作的,没截图,开个虚拟机来演示。

2.1 虚拟机添加一块硬盘

centos 7 备份 mysql 数据文件 centos整机备份_shell


现在我的虚拟机只有一块盘,点虚拟机设置下面的添加就可以添加一块盘,我随便加一块5GB的。

centos 7 备份 mysql 数据文件 centos整机备份_运维_02


过程太简单图就不截了,过程就是:

添加-选择硬件类型(硬盘)-选择SCSI-选择创建新虚拟磁盘-选择容量和“将磁盘拆分为多个文件”-选名字-完成-出来在虚拟机设置里记得点确定。

2.2 挂载硬盘

先用lsblk命令查看一下硬盘情况,可以看到我有一块20G(sda)和一块5G(sdb)两个盘

root@mimitora:/# lsblk

centos 7 备份 mysql 数据文件 centos整机备份_shell_03


再查看一下磁盘信息

root@minitora: /# fdisk -l

centos 7 备份 mysql 数据文件 centos整机备份_shell_04


新添加的硬盘默认是不能使用的,需要先进行分区,然后再格式化才能使用。

fdisk /dev/sdb #这里输自己查到的自己磁盘的序号,不一定是sdb

centos 7 备份 mysql 数据文件 centos整机备份_shell_05


PS:本来想在图里用箭头写注释的,结果快弄完了一个微信电话过来给我挤掉了,顿时不想再写一遍,手写在下面对着看。

【Command (m for help): n】:输入n,这个代表开始创建分区。
【Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1】:p代表创建主分区,最多可以
四个,e代表创建逻辑分区,最多可以一个。
我们选择p,1-4输入1,意为创建一个主分区。
【First sector (2048-10485759, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, 
default 10485759): 
Using default value 10485759】:这里按两下回车取默认值就行了。
【Command (m for help): w】:输入w,保存分区表。

看一眼分区

centos 7 备份 mysql 数据文件 centos整机备份_服务器_06


和windows一样,分区要格式化了才能用。

root@minitora:/# mkfs.ext4 /dev/sdb1

centos 7 备份 mysql 数据文件 centos整机备份_shell_07

2.3 备份文件夹挂载至新磁盘下

在根目录下新建一个叫backup的文件夹作为备份文件夹,然后把它挂在到sdb这块新盘上,然后df命令查看一下挂载情况。

root@minitora:/# mkdir /backup
root@minitora:/# mount -t ext4 /dev/sdb1 /backup
root@minitora:/# df

centos 7 备份 mysql 数据文件 centos整机备份_shell_08

三、添加定时任务

1. 新建一个文件夹把脚本放好

root@minitora:/# mkdir /beifen

脚本直接拖进去完事,拖不进去的自己装好sz/rz命令

root@minitora:/# yum install -y lrzsz

centos 7 备份 mysql 数据文件 centos整机备份_服务器_09

2. CentOS-7的定时任务一般使用cron来操作

crontab -l查看一下当前定时任务

root@minitora: /#  crontab -l

crontab -e添加定时任务

root@minitora: /#  crontab -e

centos 7 备份 mysql 数据文件 centos整机备份_centos_10


centos 7 备份 mysql 数据文件 centos整机备份_运维_11


crontab -e后把定时任务写进去就行了,我写的意思是:每天的15:12分执行一遍“/”下的“backup.sh”脚本。缩小了一下xshell窗口方便截图。

然后重新载入一遍cron的配置。

root@minitora: /# /bin/systemctl reload crond.service


centos 7 备份 mysql 数据文件 centos整机备份_服务器_12


不过CentOS-7了,尽量用systemctl,它也可能会提示你不让用service:

centos 7 备份 mysql 数据文件 centos整机备份_服务器_13


到此为止服务器定时全盘备份就算配置好了,等到了自己设的定时任务时间去/backup下看看有没有执行就好了。

centos 7 备份 mysql 数据文件 centos整机备份_运维_14

四、挂载U盘并将其中的文件拷贝至服务器

就在我要点击“发布文章”的时候:

centos 7 备份 mysql 数据文件 centos整机备份_运维_15


然后我把我的电脑和服务器接在同一台交换机上,一开始速度8M多/s,突然就掉到几十K去了,被迫用U盘直接传,顺手把这些操作一起写了。

把U盘插到服务器上(注意信息安全),然后用lsblk和fdisk -l查看U盘

root@minitora:/# lsblk
root@minitora:/# fdisk -l

发现U盘是/dev/sdc

centos 7 备份 mysql 数据文件 centos整机备份_shell_16


然后新建个文件夹,/mnt/usb

root@minitora:/# mkdir /mnt/usb

centos 7 备份 mysql 数据文件 centos整机备份_服务器_17


然后就很简单了,把/mnt/usb挂载到sdc下面,然后cd过去再cp就可以拷贝U盘里的文件了(我举例子的这个盘是我做的启动盘)。

centos 7 备份 mysql 数据文件 centos整机备份_运维_18


拷贝的时候速度几十M,这才是阳间的速度(滑稽)。