Skip to main content

Dup-composer 是 Duplicity 的前端脚本,可让您在配置文件中定义备份并以简单的方式执行它们。

项目描述

复制作曲家

Dup-composer 是 Duplicity 的前端脚本,可让您在配置文件中定义备份并以简单的方式执行它们。

这是正在进行的工作,因此尚未准备好用于生产。

开始:

  • 安装Duplicity 0.7 或更高版本。
  • 安装Dup-composer
  • 创建 YAML 配置文件并在此文件中定义备份组配置。
  • 执行dupcomp,定义您希望执行的组以及是否要执行backuprestore

您可以在其各自的部分中找到每个步骤的更多详细信息。

要求

  • 安装了 Duplicity 0.7+ 并且duplicity脚本在你的 PATH 上。
  • Python 3.5+
  • 钥匙圈 19.2+*
  • 秘密存储 3.1.1+*
  • PyYAML 5.1+*

* 将pip自动安装。

安装

PyPI安装:

pip3 install dup-composer

配置

配置应遵循YAML 1.1语法。

让我们从顶部开始,备份组列表 - 三个点 (...) 是子节点和标量节点的占位符:

backup_groups:
  my_first_backup_group:
    ...
  my_second_backup_group:
    ...

组的父节点称为backup_groups,它当前是配置结构的根,但将来可能会在顶层添加更多配置节点。

备份组

对于每个备份组,您必须具备以下结构:

my_first_backup_group:
  encryption:
    ...
  backup_provider:
    ...    
  backup_file_prefixes:
    ...
  volume_size: ...
  sources:
    ...

encryption节点(强制)是加密相关配置的父节点,子节点(强制)backup_provider指定所有提供者相关的属性。backup_file_prefixes是可选的,包含用于归档、签名和清单文件前缀配置的子节点。(volumes_size强制)节点确定备份存档文件块的大小(以 MB 为单位)。

加密

目前主要有两种设置encryption节点的方法。

加密关闭:

encryption:
  enabled: no

加密开启:

encryption:
  enabled: yes
  gpg_key: 123456789ABCDEFF
  gpg_passphrase: examplepassphrase123

如果enabled节点设置为no,则禁用加密,无需配置gpg_keygpg_passphrase节点。但是,启用加密时,它们是强制性的。此密钥将用于签署和加密备份数据。

密钥环支持:的值gpg_passphrase也可以从密钥环中读取。有关设置密钥环以与Dup-composer一起使用的详细信息,请参阅密钥环支持文档。设置密钥环后,您可以按以下格式指定密码:.gpg_passphrase: ['service_name_in_the_keyring', 'account_name_in_the_keyring']

备份提供商

要配置的backup_provider配置很大程度上取决于提供程序的类型,由 URL 方案确定:

backup_provider:
  url: file://

此配置将Dup-composer设置为将备份文件保存在本地文件系统上。此处无需指定具体路径,因为这将由sources配置部分确定。URL 只会为这些路径设置上下文

对于远程 SFTP 或 SCP 备份,您需要稍微不同的配置:

backup_provider:
  url: sftp://myscpuser@host.example.com/
  password: examplepassword123

在这种情况下,您需要在SFTP URL的第一部分指定远程SFTP主机的用户名,这也是您可以直接使用Duplicity执行的操作。使用节点指定密码。password

您可以以相同的方式使用SCP,但scp://在 URL 中使用协议而不是sftp://.

密钥环支持:的值password也可以从密钥环中读取。有关设置密钥环以与Dup-composer一起使用的详细信息,请参阅密钥环支持文档。设置密钥环后,您可以按以下格式指定密码:.password: ['service_name_in_the_keyring', 'account_name_in_the_keyring']

最后,您必须像这样配置AWS S3

backup_provider:
  url: s3://s3.sa-east-1.amazonaws.com/my-backup-bucket
  aws_access_key: EXAMPLEACCESSKEY
  aws_secret_key: ExAmPlESeCrEtKeY

S3 存储桶 URL 配置为url节点值,同时aws_access_key需要aws_secret_key包含AWS为存储桶生成的密钥。与其他提供程序一样,不应将存储桶中的实际路径、文件夹添加到 URL。

密钥环支持:的值aws_secret_key也可以从密钥环中读取。有关设置密钥环以与Dup-composer一起使用的详细信息,请参阅密钥环支持文档。设置密钥环后,您可以按以下格式指定密钥:.aws_secret_key: ['service_name_in_the_keyring', 'account_name_in_the_keyring']

备份文件前缀

如果您想以特定方式为生成的备份文件名添加前缀,则下一个功能会派上用场。我使用它在S3中设置存储桶规则,将我的存档文件移动到Glacier。下面是一个配置示例:

backup_file_prefixes:
  manifest: manifest_
  archive: archive_
  signature: signature_

可以为在备份位置生成的每种文件类型专门设置前缀。根据需要设置这些;backup_file_prefixes如果您不需要此功能,您可以完全不使用该节点。

volume_size节点相当简单:应该给出一个数字作为它的值;这决定了以兆字节为单位的存档大小

来源

sources配置层次结构中的节点下,您可以指定要备份的位置(路径)列表、备份位置以及恢复数据的位置。您可以在单个组中设置多个源。这是配置的两个源的示例集:

sources:
  /var/www/html:
    backup_path: /root/backups
    restore_path: /root/restored
  /home/tommy:
    backup_path: /home/bkup/my-laptop-backups
    restore_path: /root/restored-from-backup

源子节点/var/www/html/home/tommy确定要备份的目录,并backup_path规定备份文件将保存到的位置。在实践中, 的值backup_path将附加到url前面讨论的提供者节点的值上;因此这两个片段给出了真正的备份位置。restore_path在备份步骤期间不使用,但目前必须指定它。我将很快删除此要求,因为它没有任何意义,直到必须进行实际恢复。

此配置中提供的路径数据有一些限制:

  • 它们不能以连字符“-”开头。
  • 它们不能包含任何反斜杠字符。
  • 它们不能包含任何换行符。
  • 额外:如果您需要添加任何在YAML语法中具有特殊含义的字符,请务必检查引用规则。

包括和排除过滤器

您可以为每个备份源配置包含在备份中或从备份中排除的路径列表。配置最终通过和命令行选项传递给Duplicity 。--include--exclude

例如,采用以下配置文件filtered-backup.yml

backup_groups:
  my_filtered_backup:
    encryption:
      enabled: no
    backup_provider:
      url: file://
    volume_size: 400
    sources:
      /var/www/html:
        backup_path: /home/backups/web_server_docroot
        restore_path: /var/www/html
        filters:
          - type: exclude
            path: /var/www/html/no_bak
          - type: include
            path: /var/www/thml/no_bak/important

并像这样运行 Dup-composer:

dupcomp -c filtered-backup.yml backup

将导致以下Duplicity命令:

duplicity --no-encryption --volsize 400 --exclude /var/www/html/no_bak --include /var/www/html/no_bak/important /var/www/html file:///home/backups/web_server_docroot

重要的:

  • 您可以根据需要列出尽可能多的包含排除过滤器。
  • 您列出过滤器的顺序很重要,因为它将以相同的顺序传递给Duplicity。请查阅Duplicity 手册页以了解订单如何影响处理。
  • 过滤器仅支持用于备份。

例子

backup-compose.yml例子:

backup_groups:
  my_local_backups:
    encryption:
      enabled: no
    backup_provider:
      url: file://
    volume_size: 200
    sources:
      /var/www/html:
        backup_path: /root/backups/var/www/html
        restore_path: /root/restored/var/www/html
      /home/tommy:
        backup_path: /root/backups/home/tommy
        restore_path: /root/restored/home/tommy
  my_s3_backups:
    encryption:
      enabled: yes
      gpg_key: xxxxxx
      gpg_passphrase: xxxxxx
    backup_provider:
      url: s3://s3.sa-east-1.amazonaws.com/my-backup-bucket
      aws_access_key: xxxxxx
      aws_secret_key: xxxxxx
    backup_file_prefixes:
      manifest: manifest_
      archive: archive_
      signature: signature_
    volume_size: 50
    sources:
      /etc:
        backup_path: /etc
        restore_path: /root/restored/etc
      /home/shared:
        backup_path: /home/shared
        restore_path: /root/restored/home/shared
  my_sftp_backups_with_keyring:
    encryption:
      enabled: no
    backup_provider:
      url: sftp://myscpuser@backuphost1.example.com/
      password: ['backuphost1', 'myscpuser']
    keyring:
      username: keyringuser
      bus_address: /run/user/1003/bus
    volume_size: 200
    sources:
      /home/fun:
        backup_path: /home/fun
        restore_path: /root/restored/home/fun
      /home/katy:
        backup_path: /home/katy
        restore_path: /root/restored/home/katy

配置变更保障

为了减少意外更改或可能对现有备份链产生负面影响的更改的风险,如果任何现有备份组发生更改,Dup-composer将打印一条信息性消息并中止执行。用户可以验证更改是否是故意的,如果是,则重新运行Dup-composer-s选择禁用保护措施。

用法

dupcomp -h
-----
usage: dupcomp.py [-d] [-s] [-f] [-c <configpath>] backup|restore [backup_group1 backup_group2 ...]

optional arguments:
 -d                dry run (just print the commands to be executed)
 -c <configpath>   use the configuration file at <configpath>
 -s                skip the configuration change safeguard step
 -f                force full backup
 -----

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

dup-composer-0.3.1.tar.gz (14.6 kB 查看哈希

已上传 source

内置分布

dup_composer-0.3.1-py3-none-any.whl (16.6 kB 查看哈希

已上传 py3