batt只是备份所有的东西;数据库和文件

backupallthethings的Python项目详细描述


目的

有很多备份框架,有很多功能,加密,远程存储,增量备份,你可以给它命名…仅举几个例子bupbaculazbackupduplicityzmanda,等等。

但这些项目通常侧重于文件备份。内存数据呢?需要数据一致性的数据库呢?

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-enabledbatt/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在发生错误的情况下不负任何责任。

许可证

麻省理工学院

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

推荐PyPI第三方库


热门话题
Android中Twitter共享的java xAuth身份验证?   带有@XmlAnyAttribute和方法的java Bug?(使用JAXB-RI)   安卓 ArrayAdapter导致java。lang.NullPointerException   java如何使用JExel从现有excel文件中删除工作表   java树映射随机停止正确返回值   使用switch和scanner类java使用用户选择   java JCalendar多天选择   Java文件zip正在创建损坏的文件   Ajax调用中的java未定义错误   java处理JSON更改信息的最佳方法   java JNI不适用于AppKit线程   java在运行时为JTable的特定行设置背景色   java如何在for循环中添加按钮?   java在getclass()方法之后强制转换对象