第一部分:创建备份脚本

1. 在哪个位置创建

位置:N1 的 /root/ 目录(用户主目录,放系统脚本的地方)

用 FinalShell 连接 N1 后,命令提示符显示 root@armbian:~# 就表示你在 /root 目录了

2. 创建脚本文件

在终端粘贴下面整段(一次性复制粘贴,回车):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cat > /root/backup_system.sh << 'EOF'
#!/bin/bash
# N1 Armbian 整盘备份脚本
# 备份整个 eMMC (/dev/mmcblk2) 到外接盘 /mnt/usb/_backup/
set -e
STAMP=$(date +%Y%m%d_%H%M)
BK=/mnt/usb/_backup
DISK=/dev/mmcblk2
mkdir -p "$BK"
mountpoint -q /mnt/usb || { echo "外接盘未挂载,请先挂载"; exit 1; }
ls -t "$BK"/n1_full_*.img.gz 2>/dev/null | tail -n +4 | xargs -r rm -f
echo ">>> 开始备份 $DISK 到 $BK/n1_full_$STAMP.img.gz ..."
sync
dd if=$DISK bs=4M status=progress 2>/tmp/dd_progress.txt | gzip -1 > "$BK/n1_full_$STAMP.img.gz"
sync
echo ">>> 备份完成:"
ls -lh "$BK"/n1_full_*.img.gz
echo ""
echo "======== 恢复方法 ========"
echo "1. 用 Armbian 官方镜像做 U 盘启动盘,N1 从 U 盘启动进临时系统"
echo "2. 挂载外接盘后执行:"
echo " gunzip -c /mnt/usb/_backup/n1_full_$STAMP.img.gz | dd of=/dev/mmcblk2 bs=4M status=progress"
echo "3. 完成后 reboot,N1 完全恢复成备份时的系统"
echo "=========================================="
EOF

3. 给脚本执行权限

1
chmod +x /root/backup_system.sh

4. 验证脚本已创建

1
cat /root/backup_system.sh

能看到脚本内容就成功了。以后脚本就在 /root/backup_system.sh

第二部分:执行备份(随时可做)

方法 A:前台执行(备份期间别断开 FinalShell)

1
bash /root/backup_system.sh

方法 B:后台执行(断线、关电脑都不影响,推荐)

1
setsid bash /root/backup_system.sh < /dev/null > /tmp/backup_run.log 2>&1 &

查看备份进度 / 结果

1
2
3
4
5
6
7
8
# 看是否在跑
ps aux | grep -E "dd |gzip" | grep -v grep

# 看进度(方法B)
tail -1 /tmp/dd_progress.txt

# 看结果(方法B,完成后)
tail -20 /tmp/backup_run.log

完成标志:dd/gzip 进程消失 + _backup 目录出现新文件 n1_full_时间戳.img.gz(10~20G)

脚本特性:自动保留最近 3 份镜像,第 4 份旧的自动删除。

第三部分:完整恢复流程(重装 / 还原系统时)

第 1 步:电脑上制作 U 盘启动盘

  1. 下载 Armbian 官方镜像(N1 用的版本)下载地址
  2. 下载 balenaEtcher(免费)下载地址
  3. 打开 Etcher → 选择镜像 → 选择 U 盘 → 烧录

第 2 步:N1 从 U 盘启动

  1. U 盘插到 N1
  2. N1 开机 → 自动从 U 盘启动(进临时系统,不进入 eMMC 系统)

第 3 步:进临时系统后,挂载外接盘 + 确认设备名

1
2
3
4
5
# 挂载外接盘(找到备份文件)
mount /dev/sda1 /mnt/usb

# ⚠️ 关键!确认 eMMC 是哪个设备
lsblk

看输出:eMMC(内置盘)通常是 mmcblk1 或 mmcblk2,大小 57.6G 那个就是。一定要看清,写错盘会把 U 盘 / 外接盘覆盖!

第 4 步:恢复镜像(设备名以 lsblk 为准)

1
gunzip -c /mnt/usb/_backup/n1_full_20260911.img.gz | dd of=/dev/mmcblk2 bs=4M status=progress

(如果 lsblk 显示 eMMC 是 mmcblk1,把命令里的 mmcblk2 改成 mmcblk1)

第 5 步:完成并重启

1
2
sync
reboot

重启时拔掉 U 盘,N1 从 eMMC 启动 → 回到备份时的完整系统(宝塔、相册、WebDAV、DDNS 全部恢复)

第 6 步:验证

  • 浏览器打开 http://finicb.icu:4000/相册/(相册)
  • 打开 https://www.finicb.icu(博客)
  • SSH 连接 N1 检查服务:
1
2
systemctl status webdav ddns-go
pm2 status

重要提醒

  1. 恢复的是备份时刻的状态—— 备份之后新增的照片、文章、改动不会包含,重要改动后建议重新备份

  2. 命令里备份文件名是—— n1_config_20260911.tar.gz,如果你用 backup_system.sh 再备份了新的,就用新文件名