家用住宅主机Linux服务器备份一键脚本实战教程
很多新手朋友在家里用旧电脑跑Linux服务器,存了重要文件、照片、甚至网站数据。
一旦硬盘坏了或者手误删了文件,恢复起来很痛苦。
其实用家用住宅主机Linux服务器备份一键脚本就能自动化完成数据保护。
本文从零开始,教你写一个简单的备份脚本,并设置每天自动运行。
理解一键备份脚本的核心
一键脚本的本质是将备份命令封装到一个文件中,运行它就能完成所有操作。
常用工具有rsync(增量同步)和tar(打包压缩)。
家用环境建议先用tar打包再复制到外部硬盘或NAS,简单可靠。
准备备份环境
开始之前,确保以下条件满足:
- 一台装了Linux的服务器(本文以Ubuntu 22.04为例,其他发行版通用)。
- 连接好外部硬盘,并挂载到一个固定目录,例如
/mnt/backup。 - 拥有
sudo权限的用户账号。 - 明确要备份的目录,比如
/home、/var/www,以及数据库(如有)。
挂载外部硬盘的示例命令:
sudo mount /dev/sdb1 /mnt/backup
编写一键备份脚本
创建脚本文件backup.sh:
nano ~/backup.sh
粘贴以下内容(根据实际路径微调):
#!/bin/bash
# 家用住宅主机Linux服务器备份一键脚本
# 备份源目录列表
SOURCE_DIRS="/home /var/www /etc"
# 备份目标路径(自动添加主机名和时间戳)
DEST="/mnt/backup/`hostname`_backup_$(date +%Y%m%d_%H%M)"
# 创建目标文件夹
mkdir -p "$DEST"
# 逐目录打包压缩
for dir in $SOURCE_DIRS; do
tar -czf "$DEST/$(echo $dir | tr '/' '_' | cut -c2-).tar.gz" "$dir" 2>/dev/null
if [ $? -eq 0 ]; then
echo "已备份 $dir"
else
echo "备份 $dir 时出错,请检查权限"
fi
done
# 如果有数据库,也可在此加入 mysqldump 命令
# mysqldump -u root --all-databases > /tmp/all_db.sql 2>/dev/null
# cp /tmp/all_db.sql "$DEST/"
echo "备份完成,文件保存在 $DEST"
保存并退出(Ctrl+O → Enter → Ctrl+X)。
赋予执行权限:
chmod +x ~/backup.sh
运行脚本并验证效果
直接执行:
cd ~ && ./backup.sh
看到“备份完成”即成功。
检查目标目录:
ls -lh /mnt/backup/
进入生成的文件夹,用以下命令测试一个压缩包是否完整:
tar -tzf /mnt/backup/你的主机名_时间/home.tar.gz | head -5
如果列出文件列表,说明备份可用。
设置自动定时备份
利用crontab让脚本每天凌晨3点运行:
crontab -e
选择nano(第一次会提示),在文件末尾添加一行:
0 3 * * * /home/你的用户名/backup.sh
保存退出。
查看定时任务:
crontab -l
避坑说明
- 路径写错:脚本中用
$SOURCE_DIRS变量,但tar命令直接用了绝对路径,不要混淆。 - 磁盘空间不足:备份前执行
df -h确认目标盘有足够空间。 - 权限问题:如果备份
/etc等系统目录,普通用户可能报错。可以用sudo ./backup.sh运行,或改用su -c。 - 数据库备份:若启用
mysqldump,需提前创建~/.my.cnf写入密码,避免交互。 - 增量需求:如果文件变化频繁,建议改用
rsync脚本,本文的tar方式每次全量打包。
高频问题解答
Q1:备份脚本里的目录怎么改成我自己的?
打开backup.sh,修改SOURCE_DIRS变量中的路径,用空格分隔。
Q2:不想压缩,直接复制文件可以吗?
可以,将tar -czf换成cp -a,注意目标路径保持一致。
Q3:怎么备份到远程服务器?
使用rsync,先将目标改为user@ip:/remote/path,并配置SSH免密登录。
Q4:如何记录备份日志?
在crontab中将输出重定向:0 3 * * * /home/用户名/backup.sh >> /var/log/backup.log 2>&1
总结
本文手把手教你为家用住宅主机Linux服务器备份一键脚本编写、测试并设置定时任务。
只要照着做,你的家庭服务器数据就能每天自动备份到外部硬盘,再也不怕意外丢失。
建议每季度手动恢复一次备份,确认文件完整性。
如果你需要更高级的增量备份方案,可以搜索“rsync 增量备份教程”继续学习。