本篇文章讲一下我的一些备份思路,以及一个我非常喜欢的备份工具Active Backup for Business。

我一直觉得备份是一件很麻烦的事情,虽然在网上经常看到各种前辈们讲一些灾难性后果,什么两地三中心,各种方案等等。我自己一直懒得搞,不过前一阵子由于家里突然断电,我的一台Windows电脑的系统盘掉盘了,我才感受到真的难受,真的要进行备份。

备份思路

我整体的一个备份思路是重要文件备份和全量备份。我需要备份的设备主要可以分为四类,移动设备,个人电脑,内网服务器,外网服务器,备份的目的地则通常是云盘和NAS。目前苹果、谷歌、微软三家的云服务我都在使用,对应iCloud、GoogleOne、OneDrive。综合能力最强的是OneDirve,原因主要是国内能访问,还可以通过群晖的CloudSync双向同步。 NAS我只有一台DSM720+,尽管只有双盘位,我依然设置了SHR,对我就相当于raid1。

移动设备

移动设备的全量备份我目前没有找到太合适的方法,因此只有重要文件备份。照片、视频会先同步到iCloud,然后有Wi-Fi之后会同步到Google Photos和群晖的Photos。手动创建的文件基本上我会直接在OneDrive里面创建,然后会通过CloudSync同步到群晖。 APP尽可能使用对应的云服务或者iCloud,剩下的比如微信什么的,同样没找到很合适的方法,再加上我微信的使用频率大幅降低,所以就随缘了。

个人电脑

电脑的备份比手机要方便些,类似的,因为有iCloud和OneDrive,我基本会直接在云盘里面创建关键文件;代码则通过Git仓库同步。除此之外,个人电脑可以定期全盘备份,因为如果真的挂了,直接一键恢复是最省事的了,这可以使用时间机器备份,不过我没有用,因为群晖的Active Backup for Business也可以直接备份,具体后面介绍。

内网服务器

我有一台Windows服务器,主要用来存放电视剧、电影之类的。系统盘我会直接通过Active Backup for Business备份,这样如果再掉盘,我直接通过ISO恢复就好,而影音文件我会挑一些经典的,通过115网盘备份,因为这些文件真的丢了的话也就小小心疼一下,有PT在手基本都还能找得到。

另外还有一台Linux服务器,这个就直接通过Active Backup for Business全盘备份了。

外网服务器

外网备份受带宽限制,全盘备份基本不可能,当然如果云厂商有免费的快照之类的那是最好了,如果没有的话就只能自己挑文件备份了。主要参考鸟哥的Linux私房菜,根据文件的重要程度分为每天备份、每周备份、每月备份,然后通过shell脚本+定时任务,把这些文件拷贝到云主机的一个指定的目录,最后再通过Active Backup for Business里面的rsync来备份。举个例子,我的bitwarden属于每天备份的级别,这是云服务器上的shell脚本:

 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
26
27
28
29
30
31
32
33
34
#!/bin/bash

BASE_DIR=/backup/daily
mkdir -p "$BASE_DIR"

PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
export LANG=C

# The directory to backup
BW_DIR_TO_BACKUP="/projects/bitwarden"

# The directory where backups are stored
BW_BACKUP_DIR="$BASE_DIR/bitwarden"
mkdir -p "$BW_BACKUP_DIR"

# Maximum number of backups to keep
MAX_BACKUPS=5

# Generate the backup file name
BW_BACKUP_FILE="$BW_BACKUP_DIR/bw_$(date +%Y%m%d).tar.bz2"

# Create the backup
cd $BW_DIR_TO_BACKUP && \
docker compose ps > /dev/null 2>&1 && \
docker compose down && \
tar -pjcf "$BW_BACKUP_FILE" "$BW_DIR_TO_BACKUP" && \
docker compose up -d && \
docker compose ps > /dev/null 2>&1 && \
mail "Success" # 此处是发邮件通知备份成功,具体略

# Delete old backups if necessary
if [ $(ls -dt $BW_BACKUP_DIR/bw_*.tar.bz2 | wc -l) -gt $MAX_BACKUPS ]; then
    ls -dt $BW_BACKUP_DIR/bw_*.tar.bz2 | tail -n +$(($MAX_BACKUPS+1)) | xargs rm
fi

Active Backup for Business

我的个人电脑和内外网服务器都要用Active Backup for Business来备份,这里就简单介绍一下。先放一张截图

其实使用非常简单,个人电脑就点计算机/Mac那里,服务器全盘备份就点物理服务器,重要文件备份则是文件服务器。点进去之后添加设备,这里可能会提示证书问题,我自己在设置tab里面创建了一个专用证书,rsync是不需要这个证书的。 再之后会弹窗让下载对应客户端,按要求走就可以了,整个过程相当无脑。

最后需要说明的是,最好在群晖的通知设置里面设置一个通知,比如邮件,当备份失败的时候进行通知。不仅群晖,最好所有的备份都能设置一个通知,否则备份成功还是失败根本不知道。不过这部分稍微麻烦一些,放在之后的文章来详细展开好了。