avatar

3cats

保持理性

  • 首页
  • 分类
  • 标签
  • 文章归档
Home 使用 Snapper 管理 NAS 快照
文章

使用 Snapper 管理 NAS 快照

Posted 2024-04-27 Updated 2024-04- 27
By 3CATS
15~20 min read

对我而言,NAS 中最重要的数据是照片和文档。我的个人文档数量有限,所以会随时用多种服务备份,但是照片数量比较多,加上我老婆的照片总共有几百G,为防止这些照片数据丢失,我首先是用 btrfs 组建了 raid1,此外又用 snapper 来定时创建快照以防止照片误删。

创建 subvolume

btrfs 快照依赖 subvolume。btrfs 文件系统创建 subvolume 的指令为:

btrfs subvolume create /path/to/subvolume

配置 snapper

安装

以 Debian 系统为例,可直接通过官方源安装:

apt install snapper

配置自动任务

一般系统如果有 cron 守护进程的话,snapper 会定时执行快照任务。需要配置的是快照任务的执行间隔和快照数量限制。

为 btrfs 指定的 subvolume 创建 snapper 配置的指令为,config 为配置名称,可以根据自己情况指定:

snapper -c config create-config /path/to/subvolume

这将会:

  • 根据 /usr/share/snapper/config-templates/default 处的默认配置模板创建一个配置文件 /etc/snapper/configs/config。

  • 在 /path/to/subvolume/.snapshots 处创建一个子卷,用于存储未来该配置文件产生的子卷。子卷的路径将会是 /path/to/subvolume/.snapshots/#/snapshot,# 是子卷序号。

  • 将 config 加入到 /etc/conf.d/snapper 或/etc/default/snapper(Linux 发行版不同位置会有区别,对我而言是后一个路径) SNAPPER_CONFIGS 中。

这里需要注意的是如果要手动删除/etc/snapper/configs/ 的配置文件,需要同时将/etc/conf.d/snapper 或/etc/default/snapper 中的SNAPPER_CONFIGS 里配置删除。

之后根据自己需要修改/etc/snapper/configs/里的所要保存的snap数量,我这里的配置是这样:

# create hourly snapshots
TIMELINE_CREATE="yes"
# cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"
# limits for timeline cleanup
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="10"
TIMELINE_LIMIT_WEEKLY="0"
TIMELINE_LIMIT_MONTHLY="10"
TIMELINE_LIMIT_YEARLY="10"

TIMELINE_MIN_AGE 表示清理snap的间隔,单位是s。TIMELINE_LIMIT_* 的意思可能会让人困惑,我的配置文件的含义实际是保存最新的10 个小时快照;从10天前到现在,保留每天创建的第一个快照;不保留每周的快照;从10个月前到现在,保存每月创建的第一个快照;从10年前到现在,保留每年创建的第一个快照。

由于 btrfs 的快照记录的是子卷的变化而不是全部数据,在文件不经常删除或改动的情况下不会占用很多空间。

快照管理

使用snapper list-configs查看已有的配置文件:

root@storage:~# snapper list-configs
Config         | Subvolume                                                            
---------------+----------------------------------------------------------------------
immich_data    | /srv/dev-disk-by-uuid-aa19d9dd-125b-464a-8159-cf1a95483254/data/Album
immich_program | /srv/dev-disk-by-uuid-aa19d9dd-125b-464a-8159-cf1a95483254/immich

使用 snapper -c config list 查看快照

root@storage:~# snapper -c immich_data list
    # | Type   | Pre # | Date                            | User | Cleanup  | Description | Userdata
------+--------+-------+---------------------------------+------+----------+-------------+---------
   0  | single |       |                                 | root |          | current     |         
   2  | single |       | Wed 02 Aug 2023 12:00:01 AM CST | root | timeline | timeline    |         
 447  | single |       | Thu 07 Sep 2023 12:15:27 AM CST | root | timeline | timeline    |         
 727  | single |       | Sat 07 Oct 2023 02:08:14 PM CST | root | timeline | timeline    |         
 954  | single |       | Wed 01 Nov 2023 12:00:01 AM CST | root | timeline | timeline    |         
1130  | single |       | Sun 03 Dec 2023 11:20:42 AM CST | root | timeline | timeline    |         
1482  | single |       | Mon 01 Jan 2024 12:00:03 AM CST | root | timeline | timeline    |         
1785  | single |       | Thu 01 Feb 2024 12:00:01 AM CST | root | timeline | timeline    |         
2202  | single |       | Fri 01 Mar 2024 12:00:06 AM CST | root | timeline | timeline    |         
2728  | single |       | Mon 01 Apr 2024 12:00:01 AM CST | root | timeline | timeline    |         
3031  | single |       | Tue 16 Apr 2024 12:00:06 AM CST | root | timeline | timeline    |         
3055  | single |       | Wed 17 Apr 2024 12:00:01 AM CST | root | timeline | timeline    |         
3078  | single |       | Fri 19 Apr 2024 08:43:37 PM CST | root | timeline | timeline    |         
3082  | single |       | Sat 20 Apr 2024 12:00:07 AM CST | root | timeline | timeline    |         
3106  | single |       | Sun 21 Apr 2024 12:00:07 AM CST | root | timeline | timeline    |         
3130  | single |       | Mon 22 Apr 2024 12:00:06 AM CST | root | timeline | timeline    |         
3154  | single |       | Tue 23 Apr 2024 12:00:06 AM CST | root | timeline | timeline    |         
3178  | single |       | Wed 24 Apr 2024 12:00:05 AM CST | root | timeline | timeline    |         
3202  | single |       | Thu 25 Apr 2024 12:00:01 AM CST | root | timeline | timeline    |         
3226  | single |       | Fri 26 Apr 2024 12:00:04 AM CST | root | timeline | timeline    |         
3233  | single |       | Fri 26 Apr 2024 07:00:01 AM CST | root | timeline | timeline    |         
3234  | single |       | Fri 26 Apr 2024 08:00:01 AM CST | root | timeline | timeline    |         
3235  | single |       | Fri 26 Apr 2024 09:00:00 AM CST | root | timeline | timeline    |         
3236  | single |       | Fri 26 Apr 2024 10:00:01 AM CST | root | timeline | timeline    |         
3237  | single |       | Fri 26 Apr 2024 11:00:00 AM CST | root | timeline | timeline    |         
3238  | single |       | Fri 26 Apr 2024 12:00:03 PM CST | root | timeline | timeline    |         
3239  | single |       | Fri 26 Apr 2024 01:00:03 PM CST | root | timeline | timeline    |         
3240  | single |       | Fri 26 Apr 2024 02:00:04 PM CST | root | timeline | timeline    |         
3241  | single |       | Fri 26 Apr 2024 03:00:04 PM CST | root | timeline | timeline    |         

删除快照:

snapper -c config delete N

这个表示删除配置文件为config的序号为N的快照。

NAS
nas
License:  CC BY 4.0
Share

Further Reading

Apr 27, 2024

使用 Snapper 管理 NAS 快照

对我而言,NAS 中最重要的数据是照片和文档。我的个人文档数量有限,所以会随时用多种服务备份,但是照片数量比较多,加上我老婆的照片总共有几百G,为防止这些照片数据丢失,我首先是用 btrfs 组建了 raid1,此外又用 snapper 来定时创建快照以防止照片误删。 创建 subvolume bt

Apr 27, 2024

自建NAS照片管理服务启用TLS踩坑记录

目前我自用的 NAS 使用了OMV 提供存储管理的服务,同时用 OMV 的 omv-extral 插件所提供的 docker 支持,跑了Immich 照片管理服务。 前言 自从前年11月份收了一个二手的电脑之后,便开始了我的自建 NAS 之旅,当时赶着存储降价,拼夕夕入手了两个全新的4T硬盘,用 b

OLDER

自建NAS照片管理服务启用TLS踩坑记录

NEWER

Recently Updated

  • 使用 Snapper 管理 NAS 快照
  • 自建NAS照片管理服务启用TLS踩坑记录
  • Qwen-VL 论文阅读
  • 八位堂 Pro2 手柄通过蓝牙连接Linux系统
  • 升级Halo2后的第一次文章更新

Trending Tags

games paper reading nas Pytorch nag

Contents

©2025 3cats. Some rights reserved.

Using the Halo theme Chirpy