需求背景
为了加强公司数据的安全性和可靠性,我们将实施一项数据备份策略。该策略涉及将服务器上的固态硬盘(SSD)中的关键数据定期备份到机械硬盘(HDD)上。这一过程旨在保护数据免受意外删除、硬件故障或其他潜在风险的影响,确保业务连续性和数据完整性。
1.固态硬盘容量为2T (sda)
2.机械硬盘容量为6T (sdb)
一、使用 fdisk 在 /dev/sdb 设备上删除一个分区并创建一个新的分区
sudo fdisk /dev/sdb
- 删除现有分区
您首先删除了第一个分区(如果存在)。
Command (m for help): d
Selected partition 1
Partition 1 has been deleted. - 创建新的分区
Command (m for help): n - 使用w命令将更改写入磁盘并退出fdisk
Command (m for help): w
注:未标识的直接回车即可
二、格式话新分区,挂载新分区
- 格式化新分区:
请确保 /dev/sdb 是正确的设备名,这可以通过 lsblk 或 fdisk -l 命令验证。
sudo mkfs.ext4 /dev/sdb
2.挂载新分区
可以将新分区挂载到一个目录以开始使用它。首先,创建一个挂载点:
sudo mkdir /backup
然后,挂载分区:
sudo mount /dev/sdb /backup
此时即挂载成功,但是这种挂载方式一旦服务器重启挂载的backup目录会掉,所得设置开机自动挂载
三、开机自动挂载分区/backup
#编辑 /etc/fstab 文件
vi /etc/fstab
#使用 blkid 获取分区的 UUID:
sudo blkid /dev/sdb
#将 UUID 添加到 /etc/fstab 文件中
UUID="57e44b8f-460f-4679-b07a-4dd3748d5c62" /backup ext4 defaults 0 1
#也可以写为
/dev/sdb /backup ext4 defaults 0 1
四、编写备份脚本
# 创建一个备份脚本,使用 rsync 来同步 /home 到 /backup。
sudo vi /backup.sh#!/bin/bash
SOURCE="/home" # 源目录
DEST="/backup" # 目标目录
LOGFILE="/var/log/home_backup.log" # 备份日志文件# --progress:显示备份进度。
# --delete:删除目标目录中相对于源目录不存在的文件,确保目标目录是源目录的镜像。
# --exclude 排除文件echo "Starting backup at $(date)" >> $LOGFILE
rsync -avh --progress --delete --exclude '.cache/*' 'anaconda3/*' $SOURCE $DEST >> $LOGFILE 2>&1
echo "Backup completed at $(date)" >> $LOGFIL
如果您已经保存了这个脚本为 backup.sh,您需要给予执行权限:
chmod +x backup_script.sh
可以手动运行这个脚本来执行一次备份:
./backup.sh
切换至目标目录backup下即可看到文件已在备份
五、给备份脚本设置定时,指定时间下定时备份,通常会把时间设置在凌晨1点或者2点的样子
1.要定时运行这个脚本,您可以将其添加到 crontab 中。编辑 crontab:
crontab -e# 添加以下行以每天凌晨 2 点运行脚本:
0 2 * * * /backup.sh
2.确认 cron 任务
保存更改后,您可以列出当前用户的 cron 任务以确认任务已正确添加:
crontab -l
这将显示所有当前用户的 cron 任务。
3.检查 cron 服务状态
确保 cron 服务正在运行
sudo systemctl status cron
4.如果服务未运行,您可以使用以下命令启动它
sudo systemctl start cron