Dup-composer 是 Duplicity 的前端脚本,可让您在配置文件中定义备份并以简单的方式执行它们。
项目描述
复制作曲家
Dup-composer 是 Duplicity 的前端脚本,可让您在配置文件中定义备份并以简单的方式执行它们。
这是正在进行的工作,因此尚未准备好用于生产。
开始:
- 安装Duplicity 0.7 或更高版本。
- 安装Dup-composer。
- 创建 YAML 配置文件并在此文件中定义备份组配置。
- 执行
dupcomp,定义您希望执行的组以及是否要执行backup或restore。
您可以在其各自的部分中找到每个步骤的更多详细信息。
要求
- 安装了 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_key和gpg_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-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 0875a50301f0ae918d8f995e8564d2e16d5f991576565ab6c520b8eecd4f99dd |
|
| MD5 | 15bacf63582af7e9a3f89265f3d7c771 |
|
| 布莱克2-256 | 7cf9c4bcff3450a9082ca0707d7e18328e8b4a766bea6f2056c5c3fea9c6f589 |