batt只是备份所有的东西;数据库和文件
backupallthethings的Python项目详细描述
目的
有很多备份框架,有很多功能,加密,远程存储,增量备份,你可以给它命名…仅举几个例子bup,bacula,zbackup,duplicity,zmanda,等等。
但这些项目通常侧重于文件备份。内存数据呢?需要数据一致性的数据库呢?
backupallthethings通过提供一种简单的方法备份这些服务来减轻这种担心。它还提供了一个非常简单的cli,允许您随时备份任何内容。
没有花哨的特征,这是穷人的后援。文件仅在本地备份(ATM)。然后,您可能希望依赖这些其他项目来备份您的…备份。
backupallthethings是一个非常年轻的项目,不应该被认为是稳定的。为备份每个服务而提供的脚本是…嗯…它们就是它们。简单的shell脚本;安全网不多,日志记录/错误报告不好,可能不遵循最佳实践,对专家来说可能完全没有意义。
有一个很大的TODO list,请随意查看和黑客!
安装
来自PYPI:
pip install backupallthethings
最新:
pip install git+https://github.com/devo-ps/backupallthethings
配置
所有配置文件都可以在/opt/batt/conf
用法
帮助
提供有关所有支持选项的广泛帮助。
batt -h
列出支持的服务
列出在没有参数的情况下运行时启用的脚本
batt list
将服务添加/删除到默认值
添加/删除对服务备份脚本的支持。注意,它只适用于在没有参数的情况下运行。
# Add support for the mysql / file and postgresql services sudo batt enable mysql file postgresql # Disable (if enabled previously) the support for redis and mongodb sudo batt disable redis mongodb
这个逻辑类似于apache/nginxsites-enabled。batt在/opt/batt/scripts-enabled中创建到真实脚本的链接,并在禁用服务时删除这些链接。
由于权限的限制,您需要以root的身份运行启用/禁用功能。
运行备份
为已启用的服务运行备份
当不带参数运行时,batt将尝试运行每个启用的备份脚本并使用它们各自的配置文件。
sudo batt
您需要以root的身份运行备份。
运行自定义备份
当向batt命令传递参数时,它将有效地绕过默认启用的服务,并尝试运行在命令行上提供的每个服务。
# Will run the mysql and file backup scripts with the default values provided in # the script and config file. sudo batt mysql file # Will backup only the ``wordpress`` database and the ``/var/www/wordpress`` folder sudo batt mysql file --mysql-db wordpress --file /var/www/wordpress # Same as above; the service ``mysql`` and ``file`` can be ommitted as they are # implicitely defined by the # `--mysql-db` and `--file` options sudo batt --mysql-db wordpress --file /var/www/wordpress # You can specify options multiple times as well; it will backup both the # wordpress and mysql databases (in different files) sudo batt --mysql-db wordpress --mysql-db mysql
自定义目标文件夹
默认情况下,备份档案将保存在/opt/backup/YYYY/MM/DD/{service}中。要注意,如果已经存在的文件将被覆盖。
可以使用--path参数将目标文件夹的路径更改为更细粒度或完全自定义的路径。
# Will put the backup archives in ``/custom/path/{service}`` sudo batt --path /custom/path # You can specify date patterns (e.g. ``/opt/backup/2014/11/13/22/53/{service}``) sudo batt --path /opt/backup/%Y/%m/%d/%H/%M # Another ... ``/opt/backup/2014/11/13/daily/{service}`` sudo batt --path /opt/backup/%Y/%m/%d/daily
有关日期格式的更多详细信息,请参见here。
架构
电池
基于python的脚本,有效地解析各种参数并管理服务列表。然后它将工作委托给服务脚本。
备份脚本
它们存储在/opt/batt/scripts-available中。
实际上,它们可以基于任何语言:shell、python、ruby等,只要它们遵循命名约定backup-{service},并且是可执行的。
将BATT_DESTenv变量传递给它们,并定义用于存储结果备份档案的前缀路径。
空格分隔的参数传递给脚本(数据库、文件等),脚本可以选择使用或忽略这些参数。
备份脚本:任何语言;目前主要是使用常规shell命令的shell脚本。
待办事项
有很多事情要做…下面是一个没有优先顺序的快速列表。
- 为每个服务的备份逻辑提供更好的最佳实践
- 更好的错误管理
- 使用日志文件/系统日志
- 远程存储(S3/etc.)
- 恢复
- 通知(电子邮件等)
- 更多技术
- 文档;如何添加脚本等。
- 更好的配置支持
- 清除备份支持(例如7天后)
- innodb/myisam的mysql事务vs锁
- 处理基于lvm的备份(以及通常支持快照的文件系统,如zfs)
免责声明
batt工具处于早期开发阶段,可能会破坏、擦除数据、损坏文件系统、烧毁树、将咖啡洒在键盘上,甚至可能导致全球变暖(谁知道!)。使用风险自负。devo.ps在发生错误的情况下不负任何责任。
许可证
麻省理工学院