这两天公司新上了三台服务器,组长直接甩给我负责了,从安装系统到后面的维护,前天下个任务给我,让我做个全盘备份的定时任务,问了一下我们组前辈,任务完成得挺好,现在做个记录。
一、备份脚本
#!/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 虚拟机添加一块硬盘
现在我的虚拟机只有一块盘,点虚拟机设置下面的添加就可以添加一块盘,我随便加一块5GB的。
过程太简单图就不截了,过程就是:
添加-选择硬件类型(硬盘)-选择SCSI-选择创建新虚拟磁盘-选择容量和“将磁盘拆分为多个文件”-选名字-完成-出来在虚拟机设置里记得点确定。
2.2 挂载硬盘
先用lsblk命令查看一下硬盘情况,可以看到我有一块20G(sda)和一块5G(sdb)两个盘
root@mimitora:/# lsblk
再查看一下磁盘信息
root@minitora: /# fdisk -l
新添加的硬盘默认是不能使用的,需要先进行分区,然后再格式化才能使用。
fdisk /dev/sdb #这里输自己查到的自己磁盘的序号,不一定是sdb
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,保存分区表。
看一眼分区
和windows一样,分区要格式化了才能用。
root@minitora:/# mkfs.ext4 /dev/sdb1
2.3 备份文件夹挂载至新磁盘下
在根目录下新建一个叫backup的文件夹作为备份文件夹,然后把它挂在到sdb这块新盘上,然后df命令查看一下挂载情况。
root@minitora:/# mkdir /backup
root@minitora:/# mount -t ext4 /dev/sdb1 /backup
root@minitora:/# df
三、添加定时任务
1. 新建一个文件夹把脚本放好
root@minitora:/# mkdir /beifen
脚本直接拖进去完事,拖不进去的自己装好sz/rz命令
root@minitora:/# yum install -y lrzsz
2. CentOS-7的定时任务一般使用cron来操作
crontab -l查看一下当前定时任务
root@minitora: /# crontab -l
crontab -e添加定时任务
root@minitora: /# crontab -e
crontab -e后把定时任务写进去就行了,我写的意思是:每天的15:12分执行一遍“/”下的“backup.sh”脚本。缩小了一下xshell窗口方便截图。
然后重新载入一遍cron的配置。
root@minitora: /# /bin/systemctl reload crond.service
不过CentOS-7了,尽量用systemctl,它也可能会提示你不让用service:
到此为止服务器定时全盘备份就算配置好了,等到了自己设的定时任务时间去/backup下看看有没有执行就好了。
四、挂载U盘并将其中的文件拷贝至服务器
就在我要点击“发布文章”的时候:
然后我把我的电脑和服务器接在同一台交换机上,一开始速度8M多/s,突然就掉到几十K去了,被迫用U盘直接传,顺手把这些操作一起写了。
把U盘插到服务器上(注意信息安全),然后用lsblk和fdisk -l查看U盘
root@minitora:/# lsblk
root@minitora:/# fdisk -l
发现U盘是/dev/sdc
然后新建个文件夹,/mnt/usb
root@minitora:/# mkdir /mnt/usb
然后就很简单了,把/mnt/usb挂载到sdc下面,然后cd过去再cp就可以拷贝U盘里的文件了(我举例子的这个盘是我做的启动盘)。
拷贝的时候速度几十M,这才是阳间的速度(滑稽)。