对于使用 rsync、squashfs 和 aufs 进行备份来说这是一个好主意吗?

对于使用 rsync、squashfs 和 aufs 进行备份来说这是一个好主意吗?

我目前使用 rsync 和硬链接进行备份。我每年都会创建一个新的完整版本,然后每天都会增量。我喜欢在普通文件管理器中浏览它的方式,而且访问速度相当快。我不喜欢创建硬链接所占用的时间和空间。我也想要压缩(但在某种程度上,损坏只影响单个文件)。如果我可以将其存储在不支持 Linux 属性(例如云存储)的文件系统中,那就更好了。

我做了一些研究和测试,并学到了一些东西。首先,我发现squashfs满足了我除了增量之外的所有需求。它单独压缩每个块(但它将我的主目录压缩到原始大小的 70%),因此损坏仅影响少量数据。它也可以存储为普通文件,并且仍然可以包含linux属性。它还可以挂载,并支持随机访问。为了解决增量备份的剩余需求,我研究了覆盖文件系统。我决定使用 aufs,因为它支持多个分支,而且看起来使用起来很简单。

我考虑的备份方式是:

  • 在备份驱动器上,我将有三个文件夹:
    • 一个工作文件夹(使用 rsync 与计算机同步几次,这样我就可以进行原子备份)
    • 临时文件夹(用于存储临时安装点)
    • 备份文件夹:
    • 将完整的年度快照存储为squashfs,名称具有以下模式:full-${unix_timestamp}.squashfs
    • 根据最近的完整快照存储每月增量快照,其模式如下:full-${unix_timestamp_of_full}-differential-${unix_timestamp}.squashfs
    • 存储基于前一天直至最近一个月的每日增量快照。这将被命名为:daily-${unix_timestamp_of_monthly}-incremental-${unix_timestamp}.squashfs
  • 备份过程如下所示:
    • 运行rsync -axvh --delete /home /backups/work/几次(并排除缓存和垃圾)
    • mkdir /backups/temp/overlay
    • 将所有相关的每日、每月和完整备份挂载到以下位置的挂载点中/backups/temp/
    • 将 aufs 挂载到,/backups/base所有的 squashfs 挂载为 ro,覆盖层为 rw
    • Rsync 工作目录覆盖,比较目标是/backups/base
    • mksquashfs 覆盖到相关每日增量
    • rm 覆盖目录
    • 卸载所有东西
  • 浏览只会执行备份过程中的 aufs 安装部分,直到我想要浏览的日期为止

这是可行的吗?或者我会遇到任何重大问题(例如 aufs 性能问题)吗?我的想法听起来不错吗?

如果我的想法没有重大问题,我计划编写一个脚本来自动化此过程。

答案1

看起来是这样的:

https://github.com/falconindy/SquashFu

使用 SquashFS、Aufs 和 Rsync 的备份程序

相关内容