基于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图像可以使用以下环境变量进行自定义:

VariableDefaultDescription
CRON_MINUTE30cron schedule (minutes past hour)
CRON_HOUR0,8,16cron schedule (hours)
DBHOSTdb00db host
DBNAMEsecondshotdb name
DBPORT3306db port
DBUSERbkpdb username
DBTYPEsqlitedb type, such as mysql+pymysql
TZUTCtime zone

秘密

NameDescription
secondshot-db-passwordSQL database password
secondshot-rsync-sshkeyssh private key for rsync

你找不到的

为了保持这个工具简单,它显式地做了一些事情notdo:

  • 还原:目标文件系统是一个常规文件系统,您可以从中执行还原,而无需特殊工具
  • 无静止加密;如果需要,请使用luks或其他完整磁盘加密工具格式化目标
  • 像s3或b2这样的云存储,它不提供posix文件系统语义
  • 块级重复数据消除;您需要另一个工具来备份需要它的大文件

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java组在不同线程中记录消息   java Wicket挂载404错误页   Java:如何制作对象数组的副本?   类似Windows中的java日期时间选择器   java无法获取JTextField用户输入以搜索文本文件   安卓 Java:如何随机更改背景和字体颜色   Java定时器中的摆动变化延迟   java让Selenium暂停X秒   将响应传递到视图时发生java Nativescript错误   java刷新安卓列表视图的最佳方式是什么?   单java进程的多线程队列/工作线程体系结构   web服务Java NoSuchMethodException   java groupingBy和filter一步到位   java游标。getCount()给定错误   即使引用的文件位于项目根目录中,java PrintWrite仍会持续引发“未找到文件”异常