基于Linux的备份实用程序
secondshot的Python项目详细描述
第二次拍摄
这是一个命令行工具和库,用于管理本地网络上的文件系统备份。根据mike rubel在this 2004 article中定义的轮换规则,每个增量备份都是可用的。
rsnapshot和rsync固有地提供了这种方法的可靠性和简单性,它们在使用时无需修改。此工具添加的是在本地SQL数据库中存储元数据,以及用于存储和验证每个存储集中文件的校验和的函数。
底层rsync文件传输需要对源和目标都具有根权限。为了提高安全性,提供了一个名为rrsync的perl脚本;请参阅Guy Rutenberg's explanation。
示例crontab和配置文件可以在bin/和etc/下找到。
这个工具在pypi.org上作为python包发布,在dockerhub.com上作为docker映像发布。使用任何你方便的发行版。
理解旋转
也许可视化存储集如何旋转的最简单方法是查看存储存储集的顶级目录;下面是作者系统中每小时/daysago/weeksago/monthsago/半年一次的旋转序列示例:
drwxr-xr-x 6 root care 4096 Aug 25 10:36 daysago.0
drwxr-xr-x 6 root care 4096 Aug 24 10:33 daysago.1
drwxr-xr-x 6 root care 4096 Aug 23 10:34 daysago.2
drwxr-xr-x 6 root care 4096 Aug 22 10:34 daysago.3
drwxr-xr-x 6 root care 4096 Aug 21 10:33 daysago.4
drwxr-xr-x 6 root care 4096 Aug 20 10:33 daysago.5
drwxr-xr-x 6 root care 4096 Aug 26 02:35 hourly.0
drwxr-xr-x 6 root care 4096 Aug 25 17:37 hourly.1
drwxr-xr-x 6 root care 4096 Jul 1 09:38 monthsago.0
drwxr-xr-x 6 root care 4096 Jun 4 09:36 monthsago.1
drwxr-xr-x 6 root care 4096 May 28 2018 monthsago.2
drwxr-xr-x 6 root care 4096 Apr 31 2018 monthsago.3
drwxr-xr-x 6 root care 4096 Mar 3 2018 monthsago.4
drwxr-xr-x 6 root care 4096 Feb 27 2018 monthsago.5
drwxr-xr-x 5 root care 4096 Jan 30 2018 semiannually.0
drwxr-xr-x 4 root care 4096 Aug 28 2017 semiannually.1
drwxr-xr-x 6 root care 4096 Aug 19 10:33 weeksago.0
drwxr-xr-x 6 root care 4096 Aug 12 09:49 weeksago.1
drwxr-xr-x 6 root care 4096 Aug 5 09:52 weeksago.2
drwxr-xr-x 6 root care 4096 Jul 30 09:49 weeksago.3
在每个位置下都有每个备份主机的完整rsync'ed目录,您可以使用熟悉的任何文件管理工具还原这些目录。需要用足够的存储和索引节点格式化目标卷,以处理您定义的保留计划。未在定义的间隔之间更改的文件将被硬链接以节省空间。
Docker图像
找到docker-compose.yml示例(here:
- 如果有一个现有的数据库,创建一个数据库并添加DOCKE撰写的设置;否则将这些数据用SQLite 自动生成数据。
- 为持久数据定义装入点
- 生成4096位rsa密钥,将其id_rsa.pem添加到机密存储区
变量
Docker图像可以使用以下环境变量进行自定义:
Variable | Default | Description |
---|---|---|
CRON_MINUTE | 30 | cron schedule (minutes past hour) |
CRON_HOUR | 0,8,16 | cron schedule (hours) |
DBHOST | db00 | db host |
DBNAME | secondshot | db name |
DBPORT | 3306 | db port |
DBUSER | bkp | db username |
DBTYPE | sqlite | db type, such as mysql+pymysql |
TZ | UTC | time zone |
秘密
Name | Description |
---|---|
secondshot-db-password | SQL database password |
secondshot-rsync-sshkey | ssh private key for rsync |
你找不到的
为了保持这个工具简单,它显式地做了一些事情notdo:
- 还原:目标文件系统是一个常规文件系统,您可以从中执行还原,而无需特殊工具
- 无静止加密;如果需要,请使用luks或其他完整磁盘加密工具格式化目标
- 像s3或b2这样的云存储,它不提供posix文件系统语义
- 块级重复数据消除;您需要另一个工具来备份需要它的大文件