mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-12 10:04:14 +02:00
Add infrastructure for multiple compression type support.
Add compress-type option and deprecate compress option. Since the compress option is boolean it won't work with multiple compression types. Add logic to cfgLoadUpdateOption() to update compress-type if it is not set directly. The compress option should no longer be referenced outside the cfgLoadUpdateOption() function. Add common/compress/helper module to contain interface functions that work with multiple compression types. Code outside this module should no longer call specific compression drivers, though it may be OK to reference a specific compression type using the new interface (e.g., saving backup history files in gz format). Unit tests only test compression using the gz format because other formats may not be available in all builds. It is the job of integration tests to exercise all compression types. Additional compression types will be added in future commits.
This commit is contained in:
parent
02aa03d1a2
commit
438b957f9c
@ -169,6 +169,8 @@ use constant CFGOPT_DB_TIMEOUT => 'db-timeo
|
||||
push @EXPORT, qw(CFGOPT_DB_TIMEOUT);
|
||||
use constant CFGOPT_COMPRESS => 'compress';
|
||||
push @EXPORT, qw(CFGOPT_COMPRESS);
|
||||
use constant CFGOPT_COMPRESS_TYPE => 'compress-type';
|
||||
push @EXPORT, qw(CFGOPT_COMPRESS_TYPE);
|
||||
use constant CFGOPT_COMPRESS_LEVEL => 'compress-level';
|
||||
push @EXPORT, qw(CFGOPT_COMPRESS_LEVEL);
|
||||
use constant CFGOPT_COMPRESS_LEVEL_NETWORK => 'compress-level-network';
|
||||
@ -1152,6 +1154,7 @@ my %hConfigDefine =
|
||||
},
|
||||
},
|
||||
|
||||
# Option is deprecated and should not be referenced outside of cfgLoadUpdateOption().
|
||||
&CFGOPT_COMPRESS =>
|
||||
{
|
||||
&CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL,
|
||||
@ -1164,11 +1167,24 @@ my %hConfigDefine =
|
||||
}
|
||||
},
|
||||
|
||||
&CFGOPT_COMPRESS_TYPE =>
|
||||
{
|
||||
&CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL,
|
||||
&CFGDEF_TYPE => CFGDEF_TYPE_STRING,
|
||||
&CFGDEF_DEFAULT => 'gz',
|
||||
&CFGDEF_ALLOW_LIST =>
|
||||
[
|
||||
'none',
|
||||
'gz',
|
||||
],
|
||||
&CFGDEF_COMMAND => CFGOPT_COMPRESS,
|
||||
},
|
||||
|
||||
&CFGOPT_COMPRESS_LEVEL =>
|
||||
{
|
||||
&CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL,
|
||||
&CFGDEF_TYPE => CFGDEF_TYPE_INTEGER,
|
||||
&CFGDEF_DEFAULT => 6,
|
||||
&CFGDEF_REQUIRED => false,
|
||||
&CFGDEF_ALLOW_RANGE => [CFGDEF_DEFAULT_COMPRESS_LEVEL_MIN, CFGDEF_DEFAULT_COMPRESS_LEVEL_MAX],
|
||||
&CFGDEF_COMMAND => CFGOPT_COMPRESS,
|
||||
},
|
||||
|
@ -126,18 +126,32 @@
|
||||
|
||||
<!-- CONFIG - GENERAL SECTION - COMPRESS -->
|
||||
<config-key id="compress" name="Compress">
|
||||
<summary>Use gzip file compression.</summary>
|
||||
<summary>Use file compression.</summary>
|
||||
|
||||
<text>Backup files are compatible with command-line gzip tools.</text>
|
||||
<text>Backup files are compatible with command-line compression tools.
|
||||
|
||||
This option is now deprecated. The <setting>compress-type</setting> option should be used instead.</text>
|
||||
|
||||
<example>n</example>
|
||||
</config-key>
|
||||
|
||||
<!-- CONFIG - GENERAL SECTION - COMPRESS-TYPE -->
|
||||
<config-key id="compress-type" name="Compress Type">
|
||||
<summary>File compression type.</summary>
|
||||
|
||||
<text>The following compression types are supported:
|
||||
<ul>
|
||||
<li><id>gz</id> - gzip compression format</li>
|
||||
</ul></text>
|
||||
|
||||
<example>n</example>
|
||||
</config-key>
|
||||
|
||||
<!-- CONFIG - GENERAL SECTION - COMPRESS-LEVEL KEY -->
|
||||
<config-key id="compress-level" name="Compress Level">
|
||||
<summary>Compression level for stored files.</summary>
|
||||
<summary>File compression level.</summary>
|
||||
|
||||
<text>Sets the zlib level to be used for file compression when <setting>compress=y</setting>.</text>
|
||||
<text>Sets the level to be used for file compression when <setting>compress-type</setting> does not equal <id>none</id> or <setting>compress=y</setting> (deprecated).</text>
|
||||
|
||||
<allow>0-9</allow>
|
||||
<example>9</example>
|
||||
@ -145,9 +159,9 @@
|
||||
|
||||
<!-- CONFIG - GENERAL SECTION - COMPRESS-LEVEL-NETWORK KEY -->
|
||||
<config-key id="compress-level-network" name="Network Compress Level">
|
||||
<summary>Compression level for network transfer when <setting>compress=n</setting>.</summary>
|
||||
<summary>Network compression level.</summary>
|
||||
|
||||
<text>Sets the zlib level to be used for protocol compression when <setting>compress=n</setting> and the database cluster is not on the same host as the repository. Protocol compression is used to reduce network traffic but can be disabled by setting <setting>compress-level-network=0</setting>. When <setting>compress=y</setting> the <setting>compress-level-network</setting> setting is ignored and <setting>compress-level</setting> is used instead so that the file is only compressed once. SSH compression is always disabled.</text>
|
||||
<text>Sets the network compression level when <setting>compress-type=none</setting> and the command is not run on the same host as the repository. Compression is used to reduce network traffic but can be disabled by setting <setting>compress-level-network=0</setting>. When <setting>compress-type</setting> does not equal <id>none</id> the <setting>compress-level-network</setting> setting is ignored and <setting>compress-level</setting> is used instead so that the file is only compressed once. SSH compression is always disabled.</text>
|
||||
|
||||
<allow>0-9</allow>
|
||||
<example>1</example>
|
||||
|
@ -27,6 +27,14 @@
|
||||
</release-improvement-list>
|
||||
|
||||
<release-development-list>
|
||||
<release-item>
|
||||
<release-item-contributor-list>
|
||||
<release-item-reviewer id="cynthia.shang"/>
|
||||
</release-item-contributor-list>
|
||||
|
||||
<p>Add infrastructure for multiple compression type support.</p>
|
||||
</release-item>
|
||||
|
||||
<release-item>
|
||||
<release-item-contributor-list>
|
||||
<release-item-reviewer id="cynthia.shang"/>
|
||||
|
@ -11,6 +11,9 @@ sub libcAutoConstant
|
||||
{
|
||||
return
|
||||
{
|
||||
CFGOPTVAL_COMPRESS_TYPE_NONE => 'none',
|
||||
CFGOPTVAL_COMPRESS_TYPE_GZ => 'gz',
|
||||
|
||||
CFGOPTVAL_INFO_OUTPUT_TEXT => 'text',
|
||||
CFGOPTVAL_INFO_OUTPUT_JSON => 'json',
|
||||
|
||||
@ -78,6 +81,8 @@ sub libcAutoExportTag
|
||||
{
|
||||
config =>
|
||||
[
|
||||
'CFGOPTVAL_COMPRESS_TYPE_NONE',
|
||||
'CFGOPTVAL_COMPRESS_TYPE_GZ',
|
||||
'CFGOPTVAL_INFO_OUTPUT_TEXT',
|
||||
'CFGOPTVAL_INFO_OUTPUT_JSON',
|
||||
'CFGOPTVAL_LS_OUTPUT_TEXT',
|
||||
@ -139,6 +144,7 @@ sub libcAutoExportTag
|
||||
'CFGOPT_COMPRESS',
|
||||
'CFGOPT_COMPRESS_LEVEL',
|
||||
'CFGOPT_COMPRESS_LEVEL_NETWORK',
|
||||
'CFGOPT_COMPRESS_TYPE',
|
||||
'CFGOPT_CONFIG',
|
||||
'CFGOPT_CONFIG_INCLUDE_PATH',
|
||||
'CFGOPT_CONFIG_PATH',
|
||||
|
@ -108,6 +108,8 @@ use constant MANIFEST_KEY_CHECKSUM_PAGE => 'option-'
|
||||
push @EXPORT, qw(MANIFEST_KEY_CHECKSUM_PAGE);
|
||||
use constant MANIFEST_KEY_COMPRESS => 'option-' . cfgOptionName(CFGOPT_COMPRESS);
|
||||
push @EXPORT, qw(MANIFEST_KEY_COMPRESS);
|
||||
use constant MANIFEST_KEY_COMPRESS_TYPE => 'option-' . cfgOptionName(CFGOPT_COMPRESS_TYPE);
|
||||
push @EXPORT, qw(MANIFEST_KEY_COMPRESS_TYPE);
|
||||
use constant MANIFEST_KEY_COMPRESS_LEVEL => 'option-' . cfgOptionName(CFGOPT_COMPRESS_LEVEL);
|
||||
push @EXPORT, qw(MANIFEST_KEY_COMPRESS_LEVEL);
|
||||
use constant MANIFEST_KEY_COMPRESS_LEVEL_NETWORK => 'option-' . cfgOptionName(CFGOPT_COMPRESS_LEVEL_NETWORK);
|
||||
|
@ -46,6 +46,7 @@ my @stryCFile =
|
||||
'common/compress/gz/common.c',
|
||||
'common/compress/gz/compress.c',
|
||||
'common/compress/gz/decompress.c',
|
||||
'common/compress/helper.c',
|
||||
'common/crypto/cipherBlock.c',
|
||||
'common/crypto/common.c',
|
||||
'common/crypto/hash.c',
|
||||
|
@ -75,6 +75,7 @@ SRCS = \
|
||||
command/stanza/delete.c \
|
||||
command/stanza/upgrade.c \
|
||||
command/storage/list.c \
|
||||
common/compress/helper.c \
|
||||
common/compress/gz/common.c \
|
||||
common/compress/gz/compress.c \
|
||||
common/compress/gz/decompress.c \
|
||||
@ -212,46 +213,46 @@ clean:
|
||||
####################################################################################################################################
|
||||
# Compile rules
|
||||
####################################################################################################################################
|
||||
command/archive/common.o: command/archive/common.c build.auto.h command/archive/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/fork.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/archive/common.o: command/archive/common.c build.auto.h command/archive/common.h common/assert.h common/compress/helper.h common/debug.h common/error.auto.h common/error.h common/fork.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/common.c -o command/archive/common.o
|
||||
|
||||
command/archive/get/file.o: command/archive/get/file.c build.auto.h command/archive/common.h command/archive/get/file.h command/control/common.h common/assert.h common/compress/gz/common.h common/compress/gz/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoPg.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/archive/get/file.o: command/archive/get/file.c build.auto.h command/archive/common.h command/archive/get/file.h command/control/common.h common/assert.h common/compress/helper.h common/crypto/cipherBlock.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoPg.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/get/file.c -o command/archive/get/file.o
|
||||
|
||||
command/archive/get/get.o: command/archive/get/get.c build.auto.h command/archive/common.h command/archive/get/file.h command/archive/get/protocol.h command/command.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/archive/get/get.o: command/archive/get/get.c build.auto.h command/archive/common.h command/archive/get/file.h command/archive/get/protocol.h command/command.h common/assert.h common/compress/helper.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/get/get.c -o command/archive/get/get.o
|
||||
|
||||
command/archive/get/protocol.o: command/archive/get/protocol.c build.auto.h command/archive/get/file.h command/archive/get/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/get/protocol.c -o command/archive/get/protocol.o
|
||||
|
||||
command/archive/push/file.o: command/archive/push/file.c build.auto.h command/archive/common.h command/archive/push/file.h command/control/common.h common/assert.h common/compress/gz/common.h common/compress/gz/compress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/archive/push/file.o: command/archive/push/file.c build.auto.h command/archive/common.h command/archive/push/file.h command/control/common.h common/assert.h common/compress/helper.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/push/file.c -o command/archive/push/file.o
|
||||
|
||||
command/archive/push/protocol.o: command/archive/push/protocol.c build.auto.h command/archive/push/file.h command/archive/push/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/archive/push/protocol.o: command/archive/push/protocol.c build.auto.h command/archive/push/file.h command/archive/push/protocol.h common/assert.h common/compress/helper.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/push/protocol.c -o command/archive/push/protocol.o
|
||||
|
||||
command/archive/push/push.o: command/archive/push/push.c build.auto.h command/archive/common.h command/archive/push/file.h command/archive/push/protocol.h command/command.h command/control/common.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h info/info.h info/infoArchive.h info/infoPg.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/archive/push/push.o: command/archive/push/push.c build.auto.h command/archive/common.h command/archive/push/file.h command/archive/push/protocol.h command/command.h command/control/common.h common/assert.h common/compress/helper.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h info/info.h info/infoArchive.h info/infoPg.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/archive/push/push.c -o command/archive/push/push.o
|
||||
|
||||
command/backup/backup.o: command/backup/backup.c build.auto.h command/archive/common.h command/backup/backup.h command/backup/common.h command/backup/file.h command/backup/protocol.h command/check/common.h command/control/common.h command/stanza/common.h common/assert.h common/compress/gz/common.h common/compress/gz/compress.h common/compress/gz/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/size.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
command/backup/backup.o: command/backup/backup.c build.auto.h command/archive/common.h command/backup/backup.h command/backup/common.h command/backup/file.h command/backup/protocol.h command/check/common.h command/control/common.h command/stanza/common.h common/assert.h common/compress/helper.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/size.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/backup.c -o command/backup/backup.o
|
||||
|
||||
command/backup/common.o: command/backup/common.c build.auto.h command/backup/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/string.h common/type/stringz.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/common.c -o command/backup/common.o
|
||||
|
||||
command/backup/file.o: command/backup/file.c build.auto.h command/backup/file.h command/backup/pageChecksum.h common/assert.h common/compress/gz/common.h common/compress/gz/compress.h common/compress/gz/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/size.h common/io/io.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/backup/file.o: command/backup/file.c build.auto.h command/backup/file.h command/backup/pageChecksum.h common/assert.h common/compress/helper.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/size.h common/io/io.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/file.c -o command/backup/file.o
|
||||
|
||||
command/backup/pageChecksum.o: command/backup/pageChecksum.c build.auto.h command/backup/pageChecksum.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h postgres/interface.h postgres/interface/static.auto.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/pageChecksum.c -o command/backup/pageChecksum.o
|
||||
|
||||
command/backup/protocol.o: command/backup/protocol.c build.auto.h command/backup/file.h command/backup/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/backup/protocol.o: command/backup/protocol.c build.auto.h command/backup/file.h command/backup/protocol.h common/assert.h common/compress/helper.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/backup/protocol.c -o command/backup/protocol.o
|
||||
|
||||
command/check/check.o: command/check/check.c build.auto.h command/archive/common.h command/check/check.h command/check/common.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoArchive.h info/infoPg.h postgres/client.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/check/check.o: command/check/check.c build.auto.h command/archive/common.h command/check/check.h command/check/common.h common/assert.h common/compress/helper.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoArchive.h info/infoPg.h postgres/client.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/check/check.c -o command/check/check.o
|
||||
|
||||
command/check/common.o: command/check/common.c build.auto.h command/backup/common.h command/check/common.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h protocol/client.h protocol/command.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
command/check/common.o: command/check/common.c build.auto.h command/backup/common.h command/check/common.h common/assert.h common/compress/helper.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h protocol/client.h protocol/command.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/check/common.c -o command/check/common.o
|
||||
|
||||
command/command.o: command/command.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/http/client.h common/io/http/header.h common/io/http/query.h common/io/read.h common/io/tls/client.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h version.h
|
||||
@ -266,13 +267,13 @@ command/control/start.o: command/control/start.c build.auto.h command/control/co
|
||||
command/control/stop.o: command/control/stop.c build.auto.h command/control/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/read.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/control/stop.c -o command/control/stop.o
|
||||
|
||||
command/expire/expire.o: command/expire/expire.c build.auto.h command/archive/common.h command/backup/common.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/expire/expire.o: command/expire/expire.c build.auto.h command/archive/common.h command/backup/common.h common/assert.h common/compress/helper.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/expire/expire.c -o command/expire/expire.o
|
||||
|
||||
command/help/help.o: command/help/help.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/help/help.c -o command/help/help.o
|
||||
|
||||
command/info/info.o: command/info/info.c build.auto.h command/archive/common.h command/backup/common.h command/info/info.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/info/info.o: command/info/info.c build.auto.h command/archive/common.h command/backup/common.h command/info/info.h common/assert.h common/compress/helper.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/info/info.c -o command/info/info.o
|
||||
|
||||
command/local/local.o: command/local/local.c build.auto.h command/archive/get/protocol.h command/archive/push/protocol.h command/backup/protocol.h command/restore/protocol.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleRead.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/protocol.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h
|
||||
@ -281,25 +282,25 @@ command/local/local.o: command/local/local.c build.auto.h command/archive/get/pr
|
||||
command/remote/remote.o: command/remote/remote.c build.auto.h command/control/common.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleRead.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/protocol.h db/protocol.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h storage/remote/protocol.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/remote/remote.c -o command/remote/remote.o
|
||||
|
||||
command/restore/file.o: command/restore/file.c build.auto.h command/restore/file.h common/assert.h common/compress/gz/common.h common/compress/gz/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/size.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/restore/file.o: command/restore/file.c build.auto.h command/restore/file.h common/assert.h common/compress/helper.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/size.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/restore/file.c -o command/restore/file.o
|
||||
|
||||
command/restore/protocol.o: command/restore/protocol.c build.auto.h command/restore/file.h command/restore/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/restore/protocol.o: command/restore/protocol.c build.auto.h command/restore/file.h command/restore/protocol.h common/assert.h common/compress/helper.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/restore/protocol.c -o command/restore/protocol.o
|
||||
|
||||
command/restore/restore.o: command/restore/restore.c build.auto.h command/backup/common.h command/restore/protocol.h command/restore/restore.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/user.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h info/info.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h storage/write.intern.h version.h
|
||||
command/restore/restore.o: command/restore/restore.c build.auto.h command/backup/common.h command/restore/protocol.h command/restore/restore.h common/assert.h common/compress/helper.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h common/user.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h info/info.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h protocol/parallel.h protocol/parallelJob.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h storage/write.intern.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/restore/restore.c -o command/restore/restore.o
|
||||
|
||||
command/stanza/common.o: command/stanza/common.c build.auto.h command/check/common.h common/assert.h common/crypto/common.h common/debug.h common/encode.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h db/helper.h info/info.h info/infoPg.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/stanza/common.c -o command/stanza/common.o
|
||||
|
||||
command/stanza/create.o: command/stanza/create.c build.auto.h command/backup/common.h command/check/common.h command/control/common.h command/stanza/common.h command/stanza/create.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/stanza/create.o: command/stanza/create.c build.auto.h command/backup/common.h command/check/common.h command/control/common.h command/stanza/common.h command/stanza/create.h common/assert.h common/compress/helper.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/stanza/create.c -o command/stanza/create.o
|
||||
|
||||
command/stanza/delete.o: command/stanza/delete.c build.auto.h command/backup/common.h command/control/common.h command/stanza/delete.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/stanza/delete.o: command/stanza/delete.c build.auto.h command/backup/common.h command/control/common.h command/stanza/delete.h common/assert.h common/compress/helper.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/stanza/delete.c -o command/stanza/delete.o
|
||||
|
||||
command/stanza/upgrade.o: command/stanza/upgrade.c build.auto.h command/backup/common.h command/check/common.h command/control/common.h command/stanza/common.h command/stanza/upgrade.h common/assert.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
command/stanza/upgrade.o: command/stanza/upgrade.c build.auto.h command/backup/common.h command/check/common.h command/control/common.h command/stanza/common.h command/stanza/upgrade.h common/assert.h common/compress/helper.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h db/db.h info/info.h info/infoArchive.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/client.h postgres/interface.h postgres/version.h protocol/client.h protocol/command.h protocol/helper.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c command/stanza/upgrade.c -o command/stanza/upgrade.o
|
||||
|
||||
command/storage/list.o: command/storage/list.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/handleWrite.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
@ -314,6 +315,9 @@ common/compress/gz/compress.o: common/compress/gz/compress.c build.auto.h common
|
||||
common/compress/gz/decompress.o: common/compress/gz/decompress.c build.auto.h common/assert.h common/compress/gz/common.h common/compress/gz/decompress.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/compress/gz/decompress.c -o common/compress/gz/decompress.o
|
||||
|
||||
common/compress/helper.o: common/compress/helper.c build.auto.h common/assert.h common/compress/gz/common.h common/compress/gz/compress.h common/compress/gz/decompress.h common/compress/helper.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/compress/helper.c -o common/compress/helper.o
|
||||
|
||||
common/crypto/cipherBlock.o: common/crypto/cipherBlock.c build.auto.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/filter.intern.h common/io/filter/group.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c common/crypto/cipherBlock.c -o common/crypto/cipherBlock.o
|
||||
|
||||
@ -467,7 +471,7 @@ config/define.o: config/define.c build.auto.h common/assert.h common/debug.h com
|
||||
config/exec.o: config/exec.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c config/exec.c -o config/exec.o
|
||||
|
||||
config/load.o: config/load.c build.auto.h command/command.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/io.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/load.h config/parse.h
|
||||
config/load.o: config/load.c build.auto.h command/command.h common/assert.h common/compress/helper.h common/compress/helper.intern.h common/debug.h common/error.auto.h common/error.h common/io/io.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/load.h config/parse.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c config/load.c -o config/load.o
|
||||
|
||||
config/parse.o: config/parse.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/parse.auto.c config/parse.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
@ -491,13 +495,13 @@ info/info.o: info/info.c build.auto.h common/assert.h common/crypto/hash.h commo
|
||||
info/infoArchive.o: info/infoArchive.c build.auto.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/infoArchive.h info/infoPg.h postgres/interface.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c info/infoArchive.c -o info/infoArchive.o
|
||||
|
||||
info/infoBackup.o: info/infoBackup.c build.auto.h command/backup/common.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
info/infoBackup.o: info/infoBackup.c build.auto.h command/backup/common.h common/assert.h common/compress/helper.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/infoBackup.h info/infoPg.h info/manifest.h postgres/interface.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c info/infoBackup.c -o info/infoBackup.o
|
||||
|
||||
info/infoPg.o: info/infoPg.c build.auto.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/infoPg.h postgres/interface.h postgres/version.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c info/infoPg.c -o info/infoPg.o
|
||||
|
||||
info/manifest.o: info/manifest.c build.auto.h command/backup/common.h common/assert.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/mcv.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/manifest.h postgres/interface.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
info/manifest.o: info/manifest.c build.auto.h command/backup/common.h common/assert.h common/compress/helper.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/ini.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/mcv.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h info/info.h info/manifest.h postgres/interface.h postgres/version.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c info/manifest.c -o info/manifest.o
|
||||
|
||||
main.o: main.c build.auto.h command/archive/get/get.h command/archive/push/push.h command/backup/backup.h command/check/check.h command/command.h command/control/start.h command/control/stop.h command/expire/expire.h command/help/help.h command/info/info.h command/local/local.h command/remote/remote.h command/restore/restore.h command/stanza/create.h command/stanza/delete.h command/stanza/upgrade.h command/storage/list.h common/assert.h common/debug.h common/error.auto.h common/error.h common/exit.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/load.h postgres/interface.h storage/helper.h storage/info.h storage/read.h storage/storage.h storage/write.h version.h
|
||||
@ -584,16 +588,16 @@ storage/posix/write.o: storage/posix/write.c build.auto.h common/assert.h common
|
||||
storage/read.o: storage/read.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringz.h common/type/variant.h common/type/variantList.h storage/read.h storage/read.intern.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/read.c -o storage/read.o
|
||||
|
||||
storage/remote/protocol.o: storage/remote/protocol.c build.auto.h command/backup/pageChecksum.h common/assert.h common/compress/gz/compress.h common/compress/gz/decompress.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/sink.h common/io/filter/size.h common/io/io.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h
|
||||
storage/remote/protocol.o: storage/remote/protocol.c build.auto.h command/backup/pageChecksum.h common/assert.h common/compress/helper.h common/crypto/cipherBlock.h common/crypto/common.h common/crypto/hash.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/filter/sink.h common/io/filter/size.h common/io/io.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/regExp.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/client.h protocol/command.h protocol/helper.h protocol/server.h storage/helper.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/remote/protocol.c -o storage/remote/protocol.o
|
||||
|
||||
storage/remote/read.o: storage/remote/read.c build.auto.h common/assert.h common/compress/gz/compress.h common/compress/gz/decompress.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/server.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/remote/read.h storage/remote/storage.h storage/remote/storage.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h
|
||||
storage/remote/read.o: storage/remote/read.c build.auto.h common/assert.h common/compress/helper.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/server.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/remote/read.h storage/remote/storage.h storage/remote/storage.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/remote/read.c -o storage/remote/read.o
|
||||
|
||||
storage/remote/storage.o: storage/remote/storage.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/json.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/server.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/remote/read.h storage/remote/storage.h storage/remote/storage.intern.h storage/remote/write.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/remote/storage.c -o storage/remote/storage.o
|
||||
|
||||
storage/remote/write.o: storage/remote/write.c build.auto.h common/assert.h common/compress/gz/compress.h common/compress/gz/decompress.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/server.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/remote/storage.h storage/remote/storage.intern.h storage/remote/write.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h
|
||||
storage/remote/write.o: storage/remote/write.c build.auto.h common/assert.h common/compress/helper.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h protocol/client.h protocol/command.h protocol/server.h storage/info.h storage/read.h storage/read.intern.h storage/remote/protocol.h storage/remote/storage.h storage/remote/storage.intern.h storage/remote/write.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h
|
||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(CMAKE) -c storage/remote/write.c -o storage/remote/write.o
|
||||
|
||||
storage/s3/read.o: storage/s3/read.c build.auto.h common/assert.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/http/client.h common/io/http/header.h common/io/http/query.h common/io/read.h common/io/read.intern.h common/io/write.h common/io/write.intern.h common/log.h common/logLevel.h common/macro.h common/memContext.h common/object.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/list.h common/type/param.h common/type/string.h common/type/stringList.h common/type/stringz.h common/type/variant.h common/type/variantList.h storage/info.h storage/read.h storage/read.intern.h storage/s3/read.h storage/s3/storage.h storage/s3/storage.intern.h storage/storage.h storage/storage.intern.h storage/write.h storage/write.intern.h version.h
|
||||
|
@ -415,7 +415,7 @@ walSegmentFind(const Storage *storage, const String *archiveId, const String *wa
|
||||
// Get a list of all WAL segments that match
|
||||
StringList *list = storageListP(
|
||||
storage, strNewFmt(STORAGE_REPO_ARCHIVE "/%s/%s", strPtr(archiveId), strPtr(strSubN(walSegment, 0, 16))),
|
||||
.expression = strNewFmt("^%s%s-[0-f]{40}(\\.gz){0,1}$", strPtr(strSubN(walSegment, 0, 24)),
|
||||
.expression = strNewFmt("^%s%s-[0-f]{40}" COMPRESS_TYPE_REGEXP "{0,1}$", strPtr(strSubN(walSegment, 0, 24)),
|
||||
walIsPartial(walSegment) ? WAL_SEGMENT_PARTIAL_EXT : ""), .nullOnMissing = true);
|
||||
|
||||
// If there are results
|
||||
|
@ -17,6 +17,7 @@ typedef enum
|
||||
archiveModeGet,
|
||||
} ArchiveMode;
|
||||
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/type/stringList.h"
|
||||
#include "storage/storage.h"
|
||||
|
||||
@ -52,7 +53,7 @@ WAL segment constants
|
||||
// WAL segment directory/file
|
||||
#define WAL_SEGMENT_DIR_REGEXP "^[0-F]{16}$"
|
||||
STRING_DECLARE(WAL_SEGMENT_DIR_REGEXP_STR);
|
||||
#define WAL_SEGMENT_FILE_REGEXP "^[0-F]{24}-[0-f]{40}(\\.gz){0,1}$"
|
||||
#define WAL_SEGMENT_FILE_REGEXP "^[0-F]{24}-[0-f]{40}" COMPRESS_TYPE_REGEXP "{0,1}$"
|
||||
STRING_DECLARE(WAL_SEGMENT_FILE_REGEXP_STR);
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
|
@ -6,8 +6,7 @@ Archive Get File
|
||||
#include "command/archive/get/file.h"
|
||||
#include "command/archive/common.h"
|
||||
#include "command/control/common.h"
|
||||
#include "common/compress/gz/common.h"
|
||||
#include "common/compress/gz/decompress.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/crypto/cipherBlock.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/io/filter/group.h"
|
||||
@ -160,9 +159,11 @@ archiveGetFile(
|
||||
}
|
||||
|
||||
// If file is compressed then add the decompression filter
|
||||
if (strEndsWithZ(archiveGetCheckResult.archiveFileActual, "." GZ_EXT))
|
||||
CompressType compressType = compressTypeFromName(archiveGetCheckResult.archiveFileActual);
|
||||
|
||||
if (compressType != compressTypeNone)
|
||||
{
|
||||
ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(destination)), gzDecompressNew());
|
||||
ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(destination)), decompressFilter(compressType));
|
||||
compressible = false;
|
||||
}
|
||||
|
||||
|
@ -6,8 +6,6 @@ Archive Push File
|
||||
#include "command/archive/push/file.h"
|
||||
#include "command/archive/common.h"
|
||||
#include "command/control/common.h"
|
||||
#include "common/compress/gz/common.h"
|
||||
#include "common/compress/gz/compress.h"
|
||||
#include "common/crypto/cipherBlock.h"
|
||||
#include "common/crypto/hash.h"
|
||||
#include "common/debug.h"
|
||||
@ -24,7 +22,7 @@ Copy a file from the source to the archive
|
||||
String *
|
||||
archivePushFile(
|
||||
const String *walSource, const String *archiveId, unsigned int pgVersion, uint64_t pgSystemId, const String *archiveFile,
|
||||
CipherType cipherType, const String *cipherPass, bool compress, int compressLevel)
|
||||
CipherType cipherType, const String *cipherPass, CompressType compressType, int compressLevel)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
FUNCTION_LOG_PARAM(STRING, walSource);
|
||||
@ -34,7 +32,7 @@ archivePushFile(
|
||||
FUNCTION_LOG_PARAM(STRING, archiveFile);
|
||||
FUNCTION_LOG_PARAM(ENUM, cipherType);
|
||||
FUNCTION_TEST_PARAM(STRING, cipherPass);
|
||||
FUNCTION_LOG_PARAM(BOOL, compress);
|
||||
FUNCTION_LOG_PARAM(ENUM, compressType);
|
||||
FUNCTION_LOG_PARAM(INT, compressLevel);
|
||||
FUNCTION_LOG_END();
|
||||
|
||||
@ -114,10 +112,10 @@ archivePushFile(
|
||||
bool compressible = true;
|
||||
|
||||
// If the file will be compressed then add compression filter
|
||||
if (isSegment && compress)
|
||||
if (isSegment && compressType != compressTypeNone)
|
||||
{
|
||||
strCat(archiveDestination, "." GZ_EXT);
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(source)), gzCompressNew(compressLevel));
|
||||
compressExtCat(archiveDestination, compressType);
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(source)), compressFilter(compressType, compressLevel));
|
||||
compressible = false;
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ Archive Push File
|
||||
#ifndef COMMAND_ARCHIVE_PUSH_FILE_H
|
||||
#define COMMAND_ARCHIVE_PUSH_FILE_H
|
||||
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/crypto/common.h"
|
||||
#include "common/type/string.h"
|
||||
#include "storage/storage.h"
|
||||
@ -13,6 +14,6 @@ Functions
|
||||
***********************************************************************************************************************************/
|
||||
String *archivePushFile(
|
||||
const String *walSource, const String *archiveId, unsigned int pgVersion, uint64_t pgSystemId, const String *archiveFile,
|
||||
CipherType cipherType, const String *cipherPass, bool compress, int compressLevel);
|
||||
CipherType cipherType, const String *cipherPass, CompressType compressType, int compressLevel);
|
||||
|
||||
#endif
|
||||
|
@ -48,7 +48,7 @@ archivePushProtocol(const String *command, const VariantList *paramList, Protoco
|
||||
varStr(varLstGet(paramList, 0)), varStr(varLstGet(paramList, 1)),
|
||||
varUIntForce(varLstGet(paramList, 2)), varUInt64(varLstGet(paramList, 3)), varStr(varLstGet(paramList, 4)),
|
||||
(CipherType)varUIntForce(varLstGet(paramList, 5)), varStr(varLstGet(paramList, 6)),
|
||||
varBool(varLstGet(paramList, 7)), varIntForce(varLstGet(paramList, 8)))));
|
||||
(CompressType)varUIntForce(varLstGet(paramList, 7)), varIntForce(varLstGet(paramList, 8)))));
|
||||
}
|
||||
else
|
||||
found = false;
|
||||
|
@ -11,6 +11,7 @@ Archive Push Command
|
||||
#include "command/archive/push/protocol.h"
|
||||
#include "command/command.h"
|
||||
#include "command/control/common.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/log.h"
|
||||
#include "common/memContext.h"
|
||||
@ -359,7 +360,7 @@ cmdArchivePush(void)
|
||||
String *warning = archivePushFile(
|
||||
walFile, archiveInfo.archiveId, archiveInfo.pgVersion, archiveInfo.pgSystemId, archiveFile,
|
||||
cipherType(cfgOptionStr(cfgOptRepoCipherType)), archiveInfo.archiveCipherPass,
|
||||
cfgOptionBool(cfgOptCompress), cfgOptionInt(cfgOptCompressLevel));
|
||||
compressTypeEnum(cfgOptionStr(cfgOptCompressType)), cfgOptionInt(cfgOptCompressLevel));
|
||||
|
||||
// If a warning was returned then log it
|
||||
if (warning != NULL)
|
||||
@ -384,7 +385,7 @@ typedef struct ArchivePushAsyncData
|
||||
const StringList *walFileList; // List of wal files to process
|
||||
unsigned int walFileIdx; // Current index in the list to be processed
|
||||
CipherType cipherType; // Cipher type
|
||||
bool compress; // Compress wal files
|
||||
CompressType compressType; // Type of compression for WAL segments
|
||||
int compressLevel; // Compression level for wal files
|
||||
ArchivePushCheckResult archiveInfo; // Archive info
|
||||
} ArchivePushAsyncData;
|
||||
@ -415,7 +416,7 @@ static ProtocolParallelJob *archivePushAsyncCallback(void *data, unsigned int cl
|
||||
protocolCommandParamAdd(command, VARSTR(walFile));
|
||||
protocolCommandParamAdd(command, VARUINT(jobData->cipherType));
|
||||
protocolCommandParamAdd(command, VARSTR(jobData->archiveInfo.archiveCipherPass));
|
||||
protocolCommandParamAdd(command, VARBOOL(jobData->compress));
|
||||
protocolCommandParamAdd(command, VARUINT(jobData->compressType));
|
||||
protocolCommandParamAdd(command, VARINT(jobData->compressLevel));
|
||||
|
||||
FUNCTION_TEST_RETURN(protocolParallelJobNew(VARSTR(walFile), command));
|
||||
@ -445,7 +446,7 @@ cmdArchivePushAsync(void)
|
||||
ArchivePushAsyncData jobData =
|
||||
{
|
||||
.walPath = strLstGet(commandParam, 0),
|
||||
.compress = cfgOptionBool(cfgOptCompress),
|
||||
.compressType = compressTypeEnum(cfgOptionStr(cfgOptCompressType)),
|
||||
.compressLevel = cfgOptionInt(cfgOptCompressLevel),
|
||||
};
|
||||
|
||||
|
@ -17,9 +17,7 @@ Backup Command
|
||||
#include "command/check/common.h"
|
||||
#include "command/stanza/common.h"
|
||||
#include "common/crypto/cipherBlock.h"
|
||||
#include "common/compress/gz/common.h"
|
||||
#include "common/compress/gz/compress.h"
|
||||
#include "common/compress/gz/decompress.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/io/filter/size.h"
|
||||
#include "common/log.h"
|
||||
@ -124,8 +122,9 @@ backupLabelCreate(BackupType type, const String *backupLabelPrior, time_t timest
|
||||
storageRepo(),
|
||||
strNewFmt(STORAGE_REPO_BACKUP "/" BACKUP_PATH_HISTORY "/%s", strPtr(strLstGet(historyYearList, 0))),
|
||||
.expression = strNewFmt(
|
||||
"%s\\.manifest\\." GZ_EXT "$",
|
||||
strPtr(backupRegExpP(.full = true, .differential = true, .incremental = true, .noAnchorEnd = true)))),
|
||||
"%s\\.manifest\\.%s$",
|
||||
strPtr(backupRegExpP(.full = true, .differential = true, .incremental = true, .noAnchorEnd = true)),
|
||||
strPtr(compressTypeStr(compressTypeGz)))),
|
||||
sortOrderDesc);
|
||||
|
||||
if (strLstSize(historyList) > 0)
|
||||
@ -397,14 +396,27 @@ backupBuildIncrPrior(const InfoBackup *infoBackup)
|
||||
"last backup label = %s, version = %s", strPtr(manifestData(result)->backupLabel),
|
||||
strPtr(manifestData(result)->backrestVersion));
|
||||
|
||||
// Warn if compress option changed
|
||||
if (cfgOptionBool(cfgOptCompress) != manifestPriorData->backupOptionCompress)
|
||||
// Warn if compress-type option changed
|
||||
if (compressTypeEnum(cfgOptionStr(cfgOptCompressType)) != manifestPriorData->backupOptionCompressType)
|
||||
{
|
||||
LOG_WARN_FMT(
|
||||
"%s backup cannot alter compress option to '%s', reset to value in %s",
|
||||
strPtr(cfgOptionStr(cfgOptType)), cvtBoolToConstZ(cfgOptionBool(cfgOptCompress)),
|
||||
strPtr(backupLabelPrior));
|
||||
cfgOptionSet(cfgOptCompress, cfgSourceParam, VARBOOL(manifestPriorData->backupOptionCompress));
|
||||
"%s backup cannot alter " CFGOPT_COMPRESS_TYPE " option to '%s', reset to value in %s",
|
||||
strPtr(cfgOptionStr(cfgOptType)),
|
||||
strPtr(compressTypeStr(compressTypeEnum(cfgOptionStr(cfgOptCompressType)))), strPtr(backupLabelPrior));
|
||||
|
||||
// Set the compression type back to whatever was in the prior backup. This is not strictly needed since we
|
||||
// could store compression type on a per file basis, but it seems simplest and safest for now.
|
||||
cfgOptionSet(
|
||||
cfgOptCompressType, cfgSourceParam, VARSTR(compressTypeStr(manifestPriorData->backupOptionCompressType)));
|
||||
|
||||
// There's a small chance that the prior manifest is old enough that backupOptionCompressLevel was not recorded.
|
||||
// There's an even smaller chance that the user will also alter compression-type in this this scenario right
|
||||
// after upgrading to a newer version. Because we judge this combination of events to be nearly impossible just
|
||||
// assert here so no test coverage is needed.
|
||||
CHECK(manifestPriorData->backupOptionCompressLevel != NULL);
|
||||
|
||||
// Set the compression level back to whatever was in the prior backup
|
||||
cfgOptionSet(cfgOptCompressLevel, cfgSourceParam, manifestPriorData->backupOptionCompressLevel);
|
||||
}
|
||||
|
||||
// Warn if hardlink option changed ??? Doesn't seem like this is needed? Hardlinks are always to a directory that
|
||||
@ -502,7 +514,7 @@ typedef struct BackupResumeData
|
||||
{
|
||||
Manifest *manifest; // New manifest
|
||||
const Manifest *manifestResume; // Resumed manifest
|
||||
const bool compressed; // Is the backup compressed?
|
||||
const CompressType compressType; // Backup compression type
|
||||
const bool delta; // Is this a delta backup?
|
||||
const String *backupPath; // Path to the current level of the backup being cleaned
|
||||
const String *manifestParentName; // Parent manifest name used to construct manifest name
|
||||
@ -573,9 +585,11 @@ void backupResumeCallback(void *data, const StorageInfo *info)
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
case storageTypeFile:
|
||||
{
|
||||
// If the backup is compressed then strip off the extension before doing the lookup
|
||||
if (resumeData->compressed)
|
||||
manifestName = strSubN(manifestName, 0, strSize(manifestName) - sizeof(GZ_EXT));
|
||||
// If the file is compressed then strip off the extension before doing the lookup
|
||||
CompressType fileCompressType = compressTypeFromName(manifestName);
|
||||
|
||||
if (fileCompressType != compressTypeNone)
|
||||
manifestName = compressExtStrip(manifestName, fileCompressType);
|
||||
|
||||
// Find the file in both manifests
|
||||
const ManifestFile *file = manifestFileFindDefault(resumeData->manifest, manifestName, NULL);
|
||||
@ -584,7 +598,9 @@ void backupResumeCallback(void *data, const StorageInfo *info)
|
||||
// Check if the file can be resumed or must be removed
|
||||
const char *removeReason = NULL;
|
||||
|
||||
if (file == NULL)
|
||||
if (fileCompressType != resumeData->compressType)
|
||||
removeReason = "mismatched compression type";
|
||||
else if (file == NULL)
|
||||
removeReason = "missing in manifest";
|
||||
else if (file->reference != NULL)
|
||||
removeReason = "reference in manifest";
|
||||
@ -713,12 +729,12 @@ backupResumeFind(const Manifest *manifest, const String *cipherPassBackup)
|
||||
strPtr(manifestData(manifest)->backupLabelPrior) : "<undef>");
|
||||
}
|
||||
// Check compression. Compression can't be changed between backups so resume won't work either.
|
||||
else if (manifestResumeData->backupOptionCompress != cfgOptionBool(cfgOptCompress))
|
||||
else if (manifestResumeData->backupOptionCompressType != compressTypeEnum(cfgOptionStr(cfgOptCompressType)))
|
||||
{
|
||||
reason = strNewFmt(
|
||||
"new compression '%s' does not match resumable compression '%s'",
|
||||
cvtBoolToConstZ(cfgOptionBool(cfgOptCompress)),
|
||||
cvtBoolToConstZ(manifestResumeData->backupOptionCompress));
|
||||
strPtr(compressTypeStr(compressTypeEnum(cfgOptionStr(cfgOptCompressType)))),
|
||||
strPtr(compressTypeStr(manifestResumeData->backupOptionCompressType)));
|
||||
}
|
||||
else
|
||||
usable = true;
|
||||
@ -788,7 +804,7 @@ backupResume(Manifest *manifest, const String *cipherPassBackup)
|
||||
{
|
||||
.manifest = manifest,
|
||||
.manifestResume = manifestResume,
|
||||
.compressed = cfgOptionBool(cfgOptCompress),
|
||||
.compressType = compressTypeEnum(cfgOptionStr(cfgOptCompressType)),
|
||||
.delta = cfgOptionBool(cfgOptDelta),
|
||||
.backupPath = strNewFmt(STORAGE_REPO_BACKUP "/%s", strPtr(manifestData(manifest)->backupLabel)),
|
||||
};
|
||||
@ -918,13 +934,13 @@ backupFilePut(BackupData *backupData, Manifest *manifest, const String *name, ti
|
||||
{
|
||||
// Create file
|
||||
const String *manifestName = strNewFmt(MANIFEST_TARGET_PGDATA "/%s", strPtr(name));
|
||||
bool compress = cfgOptionBool(cfgOptCompress);
|
||||
CompressType compressType = compressTypeEnum(cfgOptionStr(cfgOptCompressType));
|
||||
|
||||
StorageWrite *write = storageNewWriteP(
|
||||
storageRepoWrite(),
|
||||
strNewFmt(
|
||||
STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(manifestData(manifest)->backupLabel), strPtr(manifestName),
|
||||
compress ? "." GZ_EXT : ""),
|
||||
strPtr(compressExtStr(compressType))),
|
||||
.compressible = true);
|
||||
|
||||
IoFilterGroup *filterGroup = ioWriteFilterGroup(storageWriteIo(write));
|
||||
@ -933,8 +949,11 @@ backupFilePut(BackupData *backupData, Manifest *manifest, const String *name, ti
|
||||
ioFilterGroupAdd(filterGroup, cryptoHashNew(HASH_TYPE_SHA1_STR));
|
||||
|
||||
// Add compression
|
||||
if (compress)
|
||||
ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(write)), gzCompressNew((int)cfgOptionUInt(cfgOptCompressLevel)));
|
||||
if (compressType != compressTypeNone)
|
||||
{
|
||||
ioFilterGroupAdd(
|
||||
ioWriteFilterGroup(storageWriteIo(write)), compressFilter(compressType, cfgOptionInt(cfgOptCompressLevel)));
|
||||
}
|
||||
|
||||
// Add encryption filter if required
|
||||
cipherBlockFilterGroupAdd(
|
||||
@ -1418,8 +1437,8 @@ typedef struct BackupJobData
|
||||
const String *const backupLabel; // Backup label (defines the backup path)
|
||||
const bool backupStandby; // Backup from standby
|
||||
const String *const cipherSubPass; // Passphrase used to encrypt files in the backup
|
||||
const bool compress; // Is the backup compressed?
|
||||
const unsigned int compressLevel; // Compress level if backup is compressed
|
||||
const CompressType compressType; // Backup compression type
|
||||
const int compressLevel; // Compress level if backup is compressed
|
||||
const bool delta; // Is this a checksum delta backup?
|
||||
const uint64_t lsnStart; // Starting lsn for the backup
|
||||
|
||||
@ -1469,8 +1488,8 @@ static ProtocolParallelJob *backupJobCallback(void *data, unsigned int clientIdx
|
||||
protocolCommandParamAdd(command, VARUINT64(jobData->lsnStart));
|
||||
protocolCommandParamAdd(command, VARSTR(file->name));
|
||||
protocolCommandParamAdd(command, VARBOOL(file->reference != NULL));
|
||||
protocolCommandParamAdd(command, VARBOOL(jobData->compress));
|
||||
protocolCommandParamAdd(command, VARUINT(jobData->compressLevel));
|
||||
protocolCommandParamAdd(command, VARUINT(jobData->compressType));
|
||||
protocolCommandParamAdd(command, VARINT(jobData->compressLevel));
|
||||
protocolCommandParamAdd(command, VARSTR(jobData->backupLabel));
|
||||
protocolCommandParamAdd(command, VARBOOL(jobData->delta));
|
||||
protocolCommandParamAdd(command, VARSTR(jobData->cipherSubPass));
|
||||
@ -1561,8 +1580,8 @@ backupProcess(BackupData *backupData, Manifest *manifest, const String *lsnStart
|
||||
{
|
||||
.backupLabel = backupLabel,
|
||||
.backupStandby = backupStandby,
|
||||
.compress = cfgOptionBool(cfgOptCompress),
|
||||
.compressLevel = cfgOptionUInt(cfgOptCompressLevel),
|
||||
.compressType = compressTypeEnum(cfgOptionStr(cfgOptCompressType)),
|
||||
.compressLevel = cfgOptionInt(cfgOptCompressLevel),
|
||||
.cipherSubPass = manifestCipherSubPass(manifest),
|
||||
.delta = cfgOptionBool(cfgOptDelta),
|
||||
.lsnStart = cfgOptionBool(cfgOptOnline) ? pgLsnFromStr(lsnStart) : 0xFFFFFFFFFFFFFFFF,
|
||||
@ -1646,7 +1665,7 @@ backupProcess(BackupData *backupData, Manifest *manifest, const String *lsnStart
|
||||
manifestFileRemove(manifest, strLstGet(fileRemove, fileRemoveIdx));
|
||||
|
||||
// Log references or create hardlinks for all files
|
||||
const char *const compressExt = jobData.compress ? "." GZ_EXT : "";
|
||||
const char *const compressExt = strPtr(compressExtStr(jobData.compressType));
|
||||
|
||||
for (unsigned int fileIdx = 0; fileIdx < manifestFileTotal(manifest); fileIdx++)
|
||||
{
|
||||
@ -1751,8 +1770,9 @@ backupArchiveCheckCopy(Manifest *manifest, unsigned int walSegmentSize, const St
|
||||
|
||||
if (cfgOptionBool(cfgOptArchiveCopy))
|
||||
{
|
||||
// Is the archive file compressed?
|
||||
bool archiveCompressed = strEndsWithZ(archiveFile, "." GZ_EXT);
|
||||
// Get compression type of the WAL segment and backup
|
||||
CompressType archiveCompressType = compressTypeFromName(archiveFile);
|
||||
CompressType backupCompressType = compressTypeEnum(cfgOptionStr(cfgOptCompressType));
|
||||
|
||||
// Open the archive file
|
||||
StorageRead *read = storageNewReadP(
|
||||
@ -1764,13 +1784,14 @@ backupArchiveCheckCopy(Manifest *manifest, unsigned int walSegmentSize, const St
|
||||
filterGroup, cipherType(cfgOptionStr(cfgOptRepoCipherType)), cipherModeDecrypt,
|
||||
infoArchiveCipherPass(infoArchive));
|
||||
|
||||
// Compress or decompress if archive and backup do not have the same compression settings
|
||||
if (archiveCompressed != cfgOptionBool(cfgOptCompress))
|
||||
// Compress/decompress if archive and backup do not have the same compression settings
|
||||
if (archiveCompressType != backupCompressType)
|
||||
{
|
||||
if (archiveCompressed)
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), gzDecompressNew());
|
||||
else
|
||||
ioFilterGroupAdd(filterGroup, gzCompressNew(cfgOptionInt(cfgOptCompressLevel)));
|
||||
if (archiveCompressType != compressTypeNone)
|
||||
ioFilterGroupAdd(filterGroup, decompressFilter(archiveCompressType));
|
||||
|
||||
if (backupCompressType != compressTypeNone)
|
||||
ioFilterGroupAdd(filterGroup, compressFilter(backupCompressType, cfgOptionInt(cfgOptCompressLevel)));
|
||||
}
|
||||
|
||||
// Encrypt with backup key if encrypted
|
||||
@ -1791,7 +1812,7 @@ backupArchiveCheckCopy(Manifest *manifest, unsigned int walSegmentSize, const St
|
||||
storageRepoWrite(),
|
||||
strNewFmt(
|
||||
STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(manifestData(manifest)->backupLabel), strPtr(manifestName),
|
||||
cfgOptionBool(cfgOptCompress) ? "." GZ_EXT : "")));
|
||||
strPtr(compressExtStr(compressTypeEnum(cfgOptionStr(cfgOptCompressType)))))));
|
||||
|
||||
// Add to manifest
|
||||
ManifestFile file =
|
||||
@ -1861,10 +1882,10 @@ backupComplete(InfoBackup *const infoBackup, Manifest *const manifest)
|
||||
StorageWrite *manifestWrite = storageNewWriteP(
|
||||
storageRepoWrite(),
|
||||
strNewFmt(
|
||||
STORAGE_REPO_BACKUP "/" BACKUP_PATH_HISTORY "/%s/%s.manifest." GZ_EXT, strPtr(strSubN(backupLabel, 0, 4)),
|
||||
strPtr(backupLabel)));
|
||||
STORAGE_REPO_BACKUP "/" BACKUP_PATH_HISTORY "/%s/%s.manifest%s", strPtr(strSubN(backupLabel, 0, 4)),
|
||||
strPtr(backupLabel), strPtr(compressExtStr(compressTypeGz))));
|
||||
|
||||
ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(manifestWrite)), gzCompressNew(9));
|
||||
ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(manifestWrite)), compressFilter(compressTypeGz, 9));
|
||||
|
||||
cipherBlockFilterGroupAdd(
|
||||
ioWriteFilterGroup(storageWriteIo(manifestWrite)), cipherType(cfgOptionStr(cfgOptRepoCipherType)), cipherModeEncrypt,
|
||||
@ -1949,7 +1970,8 @@ cmdBackup(void)
|
||||
strLstNewVarLst(cfgOptionLst(cfgOptExclude)), backupStartResult.tablespaceList);
|
||||
|
||||
// Validate the manifest using the copy start time
|
||||
manifestBuildValidate(manifest, cfgOptionBool(cfgOptDelta), backupTime(backupData, true), cfgOptionBool(cfgOptCompress));
|
||||
manifestBuildValidate(
|
||||
manifest, cfgOptionBool(cfgOptDelta), backupTime(backupData, true), compressTypeEnum(cfgOptionStr(cfgOptCompressType)));
|
||||
|
||||
// Build an incremental backup if type is not full (manifestPrior will be freed in this call)
|
||||
if (!backupBuildIncr(infoBackup, manifest, manifestPrior, backupStartResult.walSegmentName))
|
||||
|
@ -7,9 +7,6 @@ Backup File
|
||||
|
||||
#include "command/backup/file.h"
|
||||
#include "command/backup/pageChecksum.h"
|
||||
#include "common/compress/gz/common.h"
|
||||
#include "common/compress/gz/compress.h"
|
||||
#include "common/compress/gz/decompress.h"
|
||||
#include "common/crypto/cipherBlock.h"
|
||||
#include "common/crypto/hash.h"
|
||||
#include "common/debug.h"
|
||||
@ -42,8 +39,8 @@ Copy a file from the PostgreSQL data directory to the repository
|
||||
BackupFileResult
|
||||
backupFile(
|
||||
const String *pgFile, bool pgFileIgnoreMissing, uint64_t pgFileSize, const String *pgFileChecksum, bool pgFileChecksumPage,
|
||||
uint64_t pgFileChecksumPageLsnLimit, const String *repoFile, bool repoFileHasReference, bool repoFileCompress,
|
||||
unsigned int repoFileCompressLevel, const String *backupLabel, bool delta, CipherType cipherType, const String *cipherPass)
|
||||
uint64_t pgFileChecksumPageLsnLimit, const String *repoFile, bool repoFileHasReference, CompressType repoFileCompressType,
|
||||
int repoFileCompressLevel, const String *backupLabel, bool delta, CipherType cipherType, const String *cipherPass)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
FUNCTION_LOG_PARAM(STRING, pgFile); // Database file to copy to the repo
|
||||
@ -54,8 +51,8 @@ backupFile(
|
||||
FUNCTION_LOG_PARAM(UINT64, pgFileChecksumPageLsnLimit); // Upper LSN limit to which page checksums must be valid
|
||||
FUNCTION_LOG_PARAM(STRING, repoFile); // Destination in the repo to copy the pg file
|
||||
FUNCTION_LOG_PARAM(BOOL, repoFileHasReference); // Does the repo file exist in a prior backup in the set?
|
||||
FUNCTION_LOG_PARAM(BOOL, repoFileCompress); // Compress destination file
|
||||
FUNCTION_LOG_PARAM(UINT, repoFileCompressLevel); // Compression level for destination file
|
||||
FUNCTION_LOG_PARAM(ENUM, repoFileCompressType); // Compress type for repo file
|
||||
FUNCTION_LOG_PARAM(INT, repoFileCompressLevel); // Compression level for repo file
|
||||
FUNCTION_LOG_PARAM(STRING, backupLabel); // Label of current backup
|
||||
FUNCTION_LOG_PARAM(BOOL, delta); // Is the delta option on?
|
||||
FUNCTION_LOG_PARAM(ENUM, cipherType); // Encryption type
|
||||
@ -74,7 +71,7 @@ backupFile(
|
||||
{
|
||||
// Generate complete repo path and add compression extension if needed
|
||||
const String *repoPathFile = strNewFmt(
|
||||
STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(backupLabel), strPtr(repoFile), repoFileCompress ? "." GZ_EXT : "");
|
||||
STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(backupLabel), strPtr(repoFile), strPtr(compressExtStr(repoFileCompressType)));
|
||||
|
||||
// If checksum is defined then the file needs to be checked. If delta option then check the DB and possibly the repo, else
|
||||
// just check the repo.
|
||||
@ -148,8 +145,9 @@ backupFile(
|
||||
ioReadFilterGroup(read), cipherBlockNew(cipherModeDecrypt, cipherType, BUFSTR(cipherPass), NULL));
|
||||
}
|
||||
|
||||
if (repoFileCompress)
|
||||
ioFilterGroupAdd(ioReadFilterGroup(read), gzDecompressNew());
|
||||
// Decompress the file if compressed
|
||||
if (repoFileCompressType != compressTypeNone)
|
||||
ioFilterGroupAdd(ioReadFilterGroup(read), decompressFilter(repoFileCompressType));
|
||||
|
||||
ioFilterGroupAdd(ioReadFilterGroup(read), cryptoHashNew(HASH_TYPE_SHA1_STR));
|
||||
ioFilterGroupAdd(ioReadFilterGroup(read), ioSizeNew());
|
||||
@ -190,7 +188,7 @@ backupFile(
|
||||
if (result.backupCopyResult == backupCopyResultCopy || result.backupCopyResult == backupCopyResultReCopy)
|
||||
{
|
||||
// Is the file compressible during the copy?
|
||||
bool compressible = !repoFileCompress && cipherType == cipherTypeNone;
|
||||
bool compressible = repoFileCompressType == compressTypeNone && cipherType == cipherTypeNone;
|
||||
|
||||
// Setup pg file for read
|
||||
StorageRead *read = storageNewReadP(
|
||||
@ -207,8 +205,11 @@ backupFile(
|
||||
}
|
||||
|
||||
// Add compression
|
||||
if (repoFileCompress)
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), gzCompressNew((int)repoFileCompressLevel));
|
||||
if (repoFileCompressType != compressTypeNone)
|
||||
{
|
||||
ioFilterGroupAdd(
|
||||
ioReadFilterGroup(storageReadIo(read)), compressFilter(repoFileCompressType, repoFileCompressLevel));
|
||||
}
|
||||
|
||||
// If there is a cipher then add the encrypt filter
|
||||
if (cipherType != cipherTypeNone)
|
||||
|
@ -4,6 +4,7 @@ Backup File
|
||||
#ifndef COMMAND_BACKUP_FILE_H
|
||||
#define COMMAND_BACKUP_FILE_H
|
||||
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/crypto/common.h"
|
||||
#include "common/type/keyValue.h"
|
||||
|
||||
@ -33,8 +34,8 @@ typedef struct BackupFileResult
|
||||
|
||||
BackupFileResult backupFile(
|
||||
const String *pgFile, bool pgFileIgnoreMissing, uint64_t pgFileSize, const String *pgFileChecksum, bool pgFileChecksumPage,
|
||||
uint64_t pgFileChecksumPageLsnLimit, const String *repoFile, bool repoFileHasReference, bool repoFileCompress,
|
||||
unsigned int repoFileCompressLevel, const String *backupLabel, bool delta, CipherType cipherType, const String *cipherPass);
|
||||
uint64_t pgFileChecksumPageLsnLimit, const String *repoFile, bool repoFileHasReference, CompressType repoFileCompressType,
|
||||
int repoFileCompressLevel, const String *backupLabel, bool delta, CipherType cipherType, const String *cipherPass);
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Macros for function logging
|
||||
|
@ -43,8 +43,8 @@ backupProtocol(const String *command, const VariantList *paramList, ProtocolServ
|
||||
varStr(varLstGet(paramList, 0)), varBool(varLstGet(paramList, 1)), varUInt64(varLstGet(paramList, 2)),
|
||||
varStr(varLstGet(paramList, 3)), varBool(varLstGet(paramList, 4)),
|
||||
varUInt64(varLstGet(paramList, 5)), varStr(varLstGet(paramList, 6)),
|
||||
varBool(varLstGet(paramList, 7)), varBool(varLstGet(paramList, 8)), varUIntForce(varLstGet(paramList, 9)),
|
||||
varStr(varLstGet(paramList, 10)), varBool(varLstGet(paramList, 11)),
|
||||
varBool(varLstGet(paramList, 7)), (CompressType)varUIntForce(varLstGet(paramList, 8)),
|
||||
varIntForce(varLstGet(paramList, 9)), varStr(varLstGet(paramList, 10)), varBool(varLstGet(paramList, 11)),
|
||||
varStr(varLstGet(paramList, 12)) == NULL ? cipherTypeNone : cipherTypeAes256Cbc, varStr(varLstGet(paramList, 12)));
|
||||
|
||||
// Return backup result
|
||||
|
@ -8,8 +8,6 @@ Restore File
|
||||
#include <utime.h>
|
||||
|
||||
#include "command/restore/file.h"
|
||||
#include "common/compress/gz/common.h"
|
||||
#include "common/compress/gz/decompress.h"
|
||||
#include "common/crypto/cipherBlock.h"
|
||||
#include "common/crypto/hash.h"
|
||||
#include "common/debug.h"
|
||||
@ -25,7 +23,7 @@ Copy a file from the backup to the specified destination
|
||||
***********************************************************************************************************************************/
|
||||
bool
|
||||
restoreFile(
|
||||
const String *repoFile, const String *repoFileReference, bool repoFileCompressed, const String *pgFile,
|
||||
const String *repoFile, const String *repoFileReference, CompressType repoFileCompressType, const String *pgFile,
|
||||
const String *pgFileChecksum, bool pgFileZero, uint64_t pgFileSize, time_t pgFileModified, mode_t pgFileMode,
|
||||
const String *pgFileUser, const String *pgFileGroup, time_t copyTimeBegin, bool delta, bool deltaForce,
|
||||
const String *cipherPass)
|
||||
@ -33,7 +31,7 @@ restoreFile(
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
FUNCTION_LOG_PARAM(STRING, repoFile);
|
||||
FUNCTION_LOG_PARAM(STRING, repoFileReference);
|
||||
FUNCTION_LOG_PARAM(BOOL, repoFileCompressed);
|
||||
FUNCTION_LOG_PARAM(ENUM, repoFileCompressType);
|
||||
FUNCTION_LOG_PARAM(STRING, pgFile);
|
||||
FUNCTION_LOG_PARAM(STRING, pgFileChecksum);
|
||||
FUNCTION_LOG_PARAM(BOOL, pgFileZero);
|
||||
@ -153,9 +151,9 @@ restoreFile(
|
||||
}
|
||||
|
||||
// Add decompression filter
|
||||
if (repoFileCompressed)
|
||||
if (repoFileCompressType != compressTypeNone)
|
||||
{
|
||||
ioFilterGroupAdd(filterGroup, gzDecompressNew());
|
||||
ioFilterGroupAdd(filterGroup, decompressFilter(repoFileCompressType));
|
||||
compressible = false;
|
||||
}
|
||||
|
||||
@ -171,7 +169,7 @@ restoreFile(
|
||||
storageRepo(),
|
||||
strNewFmt(
|
||||
STORAGE_REPO_BACKUP "/%s/%s%s", strPtr(repoFileReference), strPtr(repoFile),
|
||||
repoFileCompressed ? "." GZ_EXT : ""),
|
||||
strPtr(compressExtStr(repoFileCompressType))),
|
||||
.compressible = compressible),
|
||||
pgFileWrite);
|
||||
|
||||
|
@ -4,6 +4,7 @@ Restore File
|
||||
#ifndef COMMAND_RESTORE_FILE_H
|
||||
#define COMMAND_RESTORE_FILE_H
|
||||
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/crypto/common.h"
|
||||
#include "common/type/string.h"
|
||||
#include "storage/storage.h"
|
||||
@ -12,7 +13,7 @@ Restore File
|
||||
Functions
|
||||
***********************************************************************************************************************************/
|
||||
bool restoreFile(
|
||||
const String *repoFile, const String *repoFileReference, bool repoFileCompressed, const String *pgFile,
|
||||
const String *repoFile, const String *repoFileReference, CompressType repoFileCompressType, const String *pgFile,
|
||||
const String *pgFileChecksum, bool pgFileZero, uint64_t pgFileSize, time_t pgFileModified, mode_t pgFileMode,
|
||||
const String *pgFileUser, const String *pgFileGroup, time_t copyTimeBegin, bool delta, bool deltaForce,
|
||||
const String *cipherPass);
|
||||
|
@ -45,13 +45,13 @@ restoreProtocol(const String *command, const VariantList *paramList, ProtocolSer
|
||||
server,
|
||||
VARBOOL(
|
||||
restoreFile(
|
||||
varStr(varLstGet(paramList, 0)), varStr(varLstGet(paramList, 1)), varBoolForce(varLstGet(paramList, 2)),
|
||||
varStr(varLstGet(paramList, 3)), varStr(varLstGet(paramList, 4)), varBoolForce(varLstGet(paramList, 5)),
|
||||
varUInt64(varLstGet(paramList, 6)), (time_t)varInt64Force(varLstGet(paramList, 7)),
|
||||
cvtZToUIntBase(strPtr(varStr(varLstGet(paramList, 8))), 8), varStr(varLstGet(paramList, 9)),
|
||||
varStr(varLstGet(paramList, 10)), (time_t)varInt64Force(varLstGet(paramList, 11)),
|
||||
varBoolForce(varLstGet(paramList, 12)), varBoolForce(varLstGet(paramList, 13)),
|
||||
varStr(varLstGet(paramList, 14)))));
|
||||
varStr(varLstGet(paramList, 0)), varStr(varLstGet(paramList, 1)),
|
||||
(CompressType)varUIntForce(varLstGet(paramList, 2)), varStr(varLstGet(paramList, 3)),
|
||||
varStr(varLstGet(paramList, 4)), varBoolForce(varLstGet(paramList, 5)), varUInt64(varLstGet(paramList, 6)),
|
||||
(time_t)varInt64Force(varLstGet(paramList, 7)), cvtZToUIntBase(strPtr(varStr(varLstGet(paramList, 8))), 8),
|
||||
varStr(varLstGet(paramList, 9)), varStr(varLstGet(paramList, 10)),
|
||||
(time_t)varInt64Force(varLstGet(paramList, 11)), varBoolForce(varLstGet(paramList, 12)),
|
||||
varBoolForce(varLstGet(paramList, 13)), varStr(varLstGet(paramList, 14)))));
|
||||
}
|
||||
else
|
||||
found = false;
|
||||
|
@ -1962,7 +1962,7 @@ static ProtocolParallelJob *restoreJobCallback(void *data, unsigned int clientId
|
||||
protocolCommandParamAdd(
|
||||
command, file->reference != NULL ?
|
||||
VARSTR(file->reference) : VARSTR(manifestData(jobData->manifest)->backupLabel));
|
||||
protocolCommandParamAdd(command, VARBOOL(manifestData(jobData->manifest)->backupOptionCompress));
|
||||
protocolCommandParamAdd(command, VARUINT(manifestData(jobData->manifest)->backupOptionCompressType));
|
||||
protocolCommandParamAdd(command, VARSTR(restoreFilePgPath(jobData->manifest, file->name)));
|
||||
protocolCommandParamAdd(command, VARSTRZ(file->checksumSha1));
|
||||
protocolCommandParamAdd(command, VARBOOL(restoreFileZeroed(file->name, jobData->zeroExp)));
|
||||
|
@ -199,9 +199,3 @@ gzCompressNew(int level)
|
||||
|
||||
FUNCTION_LOG_RETURN(IO_FILTER, this);
|
||||
}
|
||||
|
||||
IoFilter *
|
||||
gzCompressNewVar(const VariantList *paramList)
|
||||
{
|
||||
return gzCompressNew(varIntForce(varLstGet(paramList, 0)));
|
||||
}
|
||||
|
@ -18,6 +18,5 @@ Filter type constant
|
||||
Constructor
|
||||
***********************************************************************************************************************************/
|
||||
IoFilter *gzCompressNew(int level);
|
||||
IoFilter *gzCompressNewVar(const VariantList *paramList);
|
||||
|
||||
#endif
|
||||
|
275
src/common/compress/helper.c
Normal file
275
src/common/compress/helper.c
Normal file
@ -0,0 +1,275 @@
|
||||
/***********************************************************************************************************************************
|
||||
Compression Helper
|
||||
***********************************************************************************************************************************/
|
||||
#include "build.auto.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/compress/gz/common.h"
|
||||
#include "common/compress/gz/compress.h"
|
||||
#include "common/compress/gz/decompress.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/log.h"
|
||||
#include "version.h"
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Compression type constants
|
||||
***********************************************************************************************************************************/
|
||||
#define COMPRESS_TYPE_NONE "none"
|
||||
|
||||
// Constants for currently unsupported compression types
|
||||
#define LZ4_EXT "lz4"
|
||||
#define ZST_EXT "zst"
|
||||
#define BZ2_EXT "bz2"
|
||||
#define XZ_EXT "xz"
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Configuration for supported and future compression types
|
||||
***********************************************************************************************************************************/
|
||||
static const struct CompressHelperLocal
|
||||
{
|
||||
const String *const type; // Compress type -- must be extension without period prefixed
|
||||
const String *const ext; // File extension with period prefixed
|
||||
const char *compressType; // Type of the compression filter
|
||||
IoFilter *(*compressNew)(int); // Function to create new compression filter
|
||||
const char *decompressType; // Type of the decompression filter
|
||||
IoFilter *(*decompressNew)(void); // Function to create new decompression filter
|
||||
int levelDefault; // Default compression level
|
||||
} compressHelperLocal[] =
|
||||
{
|
||||
{
|
||||
.type = STRDEF(COMPRESS_TYPE_NONE),
|
||||
.ext = STRDEF(""),
|
||||
},
|
||||
{
|
||||
.type = STRDEF(GZ_EXT),
|
||||
.ext = STRDEF("." GZ_EXT),
|
||||
.compressType = GZ_COMPRESS_FILTER_TYPE,
|
||||
.compressNew = gzCompressNew,
|
||||
.decompressType = GZ_DECOMPRESS_FILTER_TYPE,
|
||||
.decompressNew = gzDecompressNew,
|
||||
.levelDefault = 6,
|
||||
},
|
||||
{
|
||||
.type = STRDEF(LZ4_EXT),
|
||||
.ext = STRDEF("." LZ4_EXT),
|
||||
},
|
||||
{
|
||||
.type = STRDEF(ZST_EXT),
|
||||
.ext = STRDEF("." ZST_EXT),
|
||||
},
|
||||
{
|
||||
.type = STRDEF(XZ_EXT),
|
||||
.ext = STRDEF("." XZ_EXT),
|
||||
},
|
||||
{
|
||||
.type = STRDEF(BZ2_EXT),
|
||||
.ext = STRDEF("." BZ2_EXT),
|
||||
},
|
||||
};
|
||||
|
||||
#define COMPRESS_LIST_SIZE \
|
||||
(sizeof(compressHelperLocal) / sizeof(struct CompressHelperLocal))
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
CompressType
|
||||
compressTypeEnum(const String *type)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(STRING, type);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(type != NULL);
|
||||
|
||||
CompressType result = compressTypeNone;
|
||||
|
||||
for (; result < COMPRESS_LIST_SIZE; result++)
|
||||
{
|
||||
if (strEq(type, compressHelperLocal[result].type))
|
||||
break;
|
||||
}
|
||||
|
||||
if (result == COMPRESS_LIST_SIZE)
|
||||
THROW_FMT(AssertError, "invalid compression type '%s'", strPtr(type));
|
||||
|
||||
FUNCTION_TEST_RETURN(result);
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
void
|
||||
compressTypePresent(CompressType type)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(ENUM, type);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(type < COMPRESS_LIST_SIZE);
|
||||
|
||||
if (type != compressTypeNone && compressHelperLocal[type].compressNew == NULL)
|
||||
{
|
||||
THROW_FMT(
|
||||
OptionInvalidValueError, PROJECT_NAME " not compiled with %s support",
|
||||
strPtr(compressHelperLocal[type].type));
|
||||
}
|
||||
|
||||
FUNCTION_TEST_RETURN_VOID();
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
const String *
|
||||
compressTypeStr(CompressType type)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(ENUM, type);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(type < COMPRESS_LIST_SIZE);
|
||||
|
||||
FUNCTION_TEST_RETURN(compressHelperLocal[type].type);
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
CompressType
|
||||
compressTypeFromName(const String *name)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(STRING, name);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
CompressType result = compressTypeNone + 1;
|
||||
|
||||
for (; result < COMPRESS_LIST_SIZE; result++)
|
||||
{
|
||||
if (strEndsWith(name, compressHelperLocal[result].ext))
|
||||
break;
|
||||
}
|
||||
|
||||
if (result == COMPRESS_LIST_SIZE)
|
||||
result = compressTypeNone;
|
||||
|
||||
FUNCTION_TEST_RETURN(result);
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
int
|
||||
compressLevelDefault(CompressType type)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(ENUM, type);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(type < COMPRESS_LIST_SIZE);
|
||||
compressTypePresent(type);
|
||||
|
||||
FUNCTION_TEST_RETURN(compressHelperLocal[type].levelDefault);
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
IoFilter *
|
||||
compressFilter(CompressType type, int level)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(ENUM, type);
|
||||
FUNCTION_TEST_PARAM(INT, level);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(type < COMPRESS_LIST_SIZE);
|
||||
ASSERT(type != compressTypeNone);
|
||||
compressTypePresent(type);
|
||||
|
||||
FUNCTION_TEST_RETURN(compressHelperLocal[type].compressNew(level));
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
IoFilter *
|
||||
compressFilterVar(const String *filterType, const VariantList *filterParamList)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelTrace);
|
||||
FUNCTION_LOG_PARAM(STRING, filterType);
|
||||
FUNCTION_LOG_PARAM(VARIANT_LIST, filterParamList);
|
||||
FUNCTION_LOG_END();
|
||||
|
||||
ASSERT(filterType != NULL);
|
||||
|
||||
IoFilter *result = NULL;
|
||||
|
||||
for (CompressType compressIdx = compressTypeNone + 1; compressIdx < COMPRESS_LIST_SIZE; compressIdx++)
|
||||
{
|
||||
const struct CompressHelperLocal *compress = &compressHelperLocal[compressIdx];
|
||||
|
||||
if (compress->compressType != NULL && strEqZ(filterType, compress->compressType))
|
||||
{
|
||||
result = compress->compressNew(varIntForce(varLstGet(filterParamList, 0)));
|
||||
break;
|
||||
}
|
||||
else if (compress->decompressType != NULL && strEqZ(filterType, compress->decompressType))
|
||||
{
|
||||
result = compress->decompressNew();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
FUNCTION_LOG_RETURN(IO_FILTER, result);
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
IoFilter *
|
||||
decompressFilter(CompressType type)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(ENUM, type);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(type < COMPRESS_LIST_SIZE);
|
||||
ASSERT(type != compressTypeNone);
|
||||
compressTypePresent(type);
|
||||
|
||||
FUNCTION_TEST_RETURN(compressHelperLocal[type].decompressNew());
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
const String *
|
||||
compressExtStr(CompressType type)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(ENUM, type);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(type < COMPRESS_LIST_SIZE);
|
||||
|
||||
FUNCTION_TEST_RETURN(compressHelperLocal[type].ext);
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
void
|
||||
compressExtCat(String *file, CompressType type)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(STRING, file);
|
||||
FUNCTION_TEST_PARAM(ENUM, type);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(file != NULL);
|
||||
|
||||
strCat(file, strPtr(compressExtStr(type)));
|
||||
|
||||
FUNCTION_TEST_RETURN_VOID();
|
||||
}
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
String *
|
||||
compressExtStrip(const String *file, CompressType type)
|
||||
{
|
||||
FUNCTION_TEST_BEGIN();
|
||||
FUNCTION_TEST_PARAM(STRING, file);
|
||||
FUNCTION_TEST_PARAM(ENUM, type);
|
||||
FUNCTION_TEST_END();
|
||||
|
||||
ASSERT(file != NULL);
|
||||
|
||||
if (!strEndsWith(file, compressExtStr(type)))
|
||||
THROW_FMT(FormatError, "'%s' must have '%s' extension", strPtr(file), strPtr(compressExtStr(type)));
|
||||
|
||||
FUNCTION_TEST_RETURN(strSubN(file, 0, strSize(file) - strSize(compressExtStr(type))));
|
||||
}
|
74
src/common/compress/helper.h
Normal file
74
src/common/compress/helper.h
Normal file
@ -0,0 +1,74 @@
|
||||
/***********************************************************************************************************************************
|
||||
Compression Helper
|
||||
|
||||
Abstract compression types so that the calling code does not need to worry about the individual characteristics of the compression
|
||||
type. All compress calls should use this module rather than the individual filters, even if a specific compression type is required.
|
||||
***********************************************************************************************************************************/
|
||||
#ifndef COMMON_COMPRESS_HELPER_H
|
||||
#define COMMON_COMPRESS_HELPER_H
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Available compression types
|
||||
***********************************************************************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
compressTypeNone, // No compression
|
||||
compressTypeGz, // gzip
|
||||
compressTypeLz4, // lz4
|
||||
|
||||
// These types have not been implemented but are included here so older versions can identify compression types added by future
|
||||
// versions. In that sense this list is speculative, but these seem to be all the types that are likely to be added in the
|
||||
// foreseeable future.
|
||||
compressTypeZst, // zstandard
|
||||
compressTypeXz, // xz/lzma
|
||||
compressTypeBz2, // bzip2
|
||||
} CompressType;
|
||||
|
||||
#include <common/type/string.h>
|
||||
#include <common/io/filter/group.h>
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Compression types as a regexp. In the future this regexp will be generated automatically at build time but we want to wait until the
|
||||
build code is migrated to C to do that. For now just define it statically since we don't expect it to change very often. If a
|
||||
supported type is not in this list then it should cause an integration test to fail.
|
||||
***********************************************************************************************************************************/
|
||||
#define COMPRESS_TYPE_REGEXP "(\\.gz|\\.lz4|\\.zst|\\.xz|\\.bz2)"
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Functions
|
||||
***********************************************************************************************************************************/
|
||||
// Get enum from a compression type string
|
||||
CompressType compressTypeEnum(const String *type);
|
||||
|
||||
// Check that a valid compress type is compiled into this binary. Errors when the compress type is not present.
|
||||
void compressTypePresent(CompressType type);
|
||||
|
||||
// Get string representation of a compression type. This is the the extension without the period.
|
||||
const String *compressTypeStr(CompressType type);
|
||||
|
||||
// Get compression type from a (file) name by checking the extension. If the extension is not a supported compression type then
|
||||
// compressType none is returned, even if the file is compressed with some unknown type.
|
||||
CompressType compressTypeFromName(const String *name);
|
||||
|
||||
// Compression filter for the specified type. Error when compress type is none or invalid.
|
||||
IoFilter *compressFilter(CompressType type, int level);
|
||||
|
||||
// Compression/decompression filter based on string type and a parameter list. This is useful when a filter must be created on a
|
||||
// remote system since the filter type and parameters can be passed through a protocol.
|
||||
IoFilter *compressFilterVar(const String *filterType, const VariantList *filterParamList);
|
||||
|
||||
// Decompression filter for the specified type. Error when compress type is none or invalid.
|
||||
IoFilter *decompressFilter(CompressType type);
|
||||
|
||||
// Get extension for the current compression type
|
||||
const String *compressExtStr(CompressType type);
|
||||
|
||||
// Add extension for current compression type to the file
|
||||
void compressExtCat(String *file, CompressType type);
|
||||
|
||||
// Remove the specified compression extension. Error when the extension is not correct.
|
||||
String *compressExtStrip(const String *file, CompressType type);
|
||||
|
||||
#endif
|
15
src/common/compress/helper.intern.h
Normal file
15
src/common/compress/helper.intern.h
Normal file
@ -0,0 +1,15 @@
|
||||
/***********************************************************************************************************************************
|
||||
Compression Helper Internal
|
||||
***********************************************************************************************************************************/
|
||||
#ifndef COMMON_COMPRESS_HELPER_INTERN_H
|
||||
#define COMMON_COMPRESS_HELPER_INTERN_H
|
||||
|
||||
#include "common/compress/helper.h"
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Functions
|
||||
***********************************************************************************************************************************/
|
||||
// Default compression level for a compression type, used while loading the configuration
|
||||
int compressLevelDefault(CompressType type);
|
||||
|
||||
#endif
|
@ -240,6 +240,7 @@ STRING_EXTERN(CFGOPT_CMD_SSH_STR, CFGOPT_CMD_S
|
||||
STRING_EXTERN(CFGOPT_COMPRESS_STR, CFGOPT_COMPRESS);
|
||||
STRING_EXTERN(CFGOPT_COMPRESS_LEVEL_STR, CFGOPT_COMPRESS_LEVEL);
|
||||
STRING_EXTERN(CFGOPT_COMPRESS_LEVEL_NETWORK_STR, CFGOPT_COMPRESS_LEVEL_NETWORK);
|
||||
STRING_EXTERN(CFGOPT_COMPRESS_TYPE_STR, CFGOPT_COMPRESS_TYPE);
|
||||
STRING_EXTERN(CFGOPT_CONFIG_STR, CFGOPT_CONFIG);
|
||||
STRING_EXTERN(CFGOPT_CONFIG_INCLUDE_PATH_STR, CFGOPT_CONFIG_INCLUDE_PATH);
|
||||
STRING_EXTERN(CFGOPT_CONFIG_PATH_STR, CFGOPT_CONFIG_PATH);
|
||||
@ -509,6 +510,14 @@ static ConfigOptionData configOptionData[CFG_OPTION_TOTAL] = CONFIG_OPTION_LIST
|
||||
CONFIG_OPTION_DEFINE_ID(cfgDefOptCompressLevelNetwork)
|
||||
)
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
CONFIG_OPTION
|
||||
(
|
||||
CONFIG_OPTION_NAME(CFGOPT_COMPRESS_TYPE)
|
||||
CONFIG_OPTION_INDEX(0)
|
||||
CONFIG_OPTION_DEFINE_ID(cfgDefOptCompressType)
|
||||
)
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
CONFIG_OPTION
|
||||
(
|
||||
|
@ -71,6 +71,8 @@ Option constants
|
||||
STRING_DECLARE(CFGOPT_COMPRESS_LEVEL_STR);
|
||||
#define CFGOPT_COMPRESS_LEVEL_NETWORK "compress-level-network"
|
||||
STRING_DECLARE(CFGOPT_COMPRESS_LEVEL_NETWORK_STR);
|
||||
#define CFGOPT_COMPRESS_TYPE "compress-type"
|
||||
STRING_DECLARE(CFGOPT_COMPRESS_TYPE_STR);
|
||||
#define CFGOPT_CONFIG "config"
|
||||
STRING_DECLARE(CFGOPT_CONFIG_STR);
|
||||
#define CFGOPT_CONFIG_INCLUDE_PATH "config-include-path"
|
||||
@ -390,7 +392,7 @@ Option constants
|
||||
#define CFGOPT_TYPE "type"
|
||||
STRING_DECLARE(CFGOPT_TYPE_STR);
|
||||
|
||||
#define CFG_OPTION_TOTAL 172
|
||||
#define CFG_OPTION_TOTAL 173
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Command enum
|
||||
@ -433,6 +435,7 @@ typedef enum
|
||||
cfgOptCompress,
|
||||
cfgOptCompressLevel,
|
||||
cfgOptCompressLevelNetwork,
|
||||
cfgOptCompressType,
|
||||
cfgOptConfig,
|
||||
cfgOptConfigIncludePath,
|
||||
cfgOptConfigPath,
|
||||
|
@ -640,10 +640,12 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_SECURE(false)
|
||||
|
||||
CFGDEFDATA_OPTION_HELP_SECTION("general")
|
||||
CFGDEFDATA_OPTION_HELP_SUMMARY("Use gzip file compression.")
|
||||
CFGDEFDATA_OPTION_HELP_SUMMARY("Use file compression.")
|
||||
CFGDEFDATA_OPTION_HELP_DESCRIPTION
|
||||
(
|
||||
"Backup files are compatible with command-line gzip tools."
|
||||
"Backup files are compatible with command-line compression tools.\n"
|
||||
"\n"
|
||||
"This option is now deprecated. The compress-type option should be used instead."
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_COMMAND_LIST
|
||||
@ -662,7 +664,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION
|
||||
(
|
||||
CFGDEFDATA_OPTION_NAME("compress-level")
|
||||
CFGDEFDATA_OPTION_REQUIRED(true)
|
||||
CFGDEFDATA_OPTION_REQUIRED(false)
|
||||
CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal)
|
||||
CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeInteger)
|
||||
CFGDEFDATA_OPTION_INTERNAL(false)
|
||||
@ -671,10 +673,10 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_SECURE(false)
|
||||
|
||||
CFGDEFDATA_OPTION_HELP_SECTION("general")
|
||||
CFGDEFDATA_OPTION_HELP_SUMMARY("Compression level for stored files.")
|
||||
CFGDEFDATA_OPTION_HELP_SUMMARY("File compression level.")
|
||||
CFGDEFDATA_OPTION_HELP_DESCRIPTION
|
||||
(
|
||||
"Sets the zlib level to be used for file compression when compress=y."
|
||||
"Sets the level to be used for file compression when compress-type does not equal none or compress=y (deprecated)."
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_COMMAND_LIST
|
||||
@ -686,7 +688,6 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_OPTIONAL_LIST
|
||||
(
|
||||
CFGDEFDATA_OPTION_OPTIONAL_ALLOW_RANGE(0, 9)
|
||||
CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("6")
|
||||
)
|
||||
)
|
||||
|
||||
@ -703,13 +704,13 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_SECURE(false)
|
||||
|
||||
CFGDEFDATA_OPTION_HELP_SECTION("general")
|
||||
CFGDEFDATA_OPTION_HELP_SUMMARY("Compression level for network transfer when compress=n.")
|
||||
CFGDEFDATA_OPTION_HELP_SUMMARY("Network compression level.")
|
||||
CFGDEFDATA_OPTION_HELP_DESCRIPTION
|
||||
(
|
||||
"Sets the zlib level to be used for protocol compression when compress=n and the database cluster is not on the same "
|
||||
"host as the repository. Protocol compression is used to reduce network traffic but can be disabled by setting "
|
||||
"compress-level-network=0. When compress=y the compress-level-network setting is ignored and compress-level is "
|
||||
"used instead so that the file is only compressed once. SSH compression is always disabled."
|
||||
"Sets the network compression level when compress-type=none and the command is not run on the same host as the "
|
||||
"repository. Compression is used to reduce network traffic but can be disabled by setting "
|
||||
"compress-level-network=0. When compress-type does not equal none the compress-level-network setting is ignored "
|
||||
"and compress-level is used instead so that the file is only compressed once. SSH compression is always disabled."
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_COMMAND_LIST
|
||||
@ -733,6 +734,45 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
)
|
||||
)
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------------------
|
||||
CFGDEFDATA_OPTION
|
||||
(
|
||||
CFGDEFDATA_OPTION_NAME("compress-type")
|
||||
CFGDEFDATA_OPTION_REQUIRED(true)
|
||||
CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal)
|
||||
CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString)
|
||||
CFGDEFDATA_OPTION_INTERNAL(false)
|
||||
|
||||
CFGDEFDATA_OPTION_INDEX_TOTAL(1)
|
||||
CFGDEFDATA_OPTION_SECURE(false)
|
||||
|
||||
CFGDEFDATA_OPTION_HELP_SECTION("general")
|
||||
CFGDEFDATA_OPTION_HELP_SUMMARY("File compression type.")
|
||||
CFGDEFDATA_OPTION_HELP_DESCRIPTION
|
||||
(
|
||||
"The following compression types are supported:\n"
|
||||
"\n"
|
||||
"* gz - gzip compression format"
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_COMMAND_LIST
|
||||
(
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_OPTIONAL_LIST
|
||||
(
|
||||
CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST
|
||||
(
|
||||
"none",
|
||||
"gz"
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("gz")
|
||||
)
|
||||
)
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------------------
|
||||
CFGDEFDATA_OPTION
|
||||
(
|
||||
|
@ -61,6 +61,7 @@ typedef enum
|
||||
cfgDefOptCompress,
|
||||
cfgDefOptCompressLevel,
|
||||
cfgDefOptCompressLevelNetwork,
|
||||
cfgDefOptCompressType,
|
||||
cfgDefOptConfig,
|
||||
cfgDefOptConfigIncludePath,
|
||||
cfgDefOptConfigPath,
|
||||
|
@ -7,6 +7,7 @@ Configuration Load
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "command/command.h"
|
||||
#include "common/compress/helper.intern.h"
|
||||
#include "common/memContext.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/io/io.h"
|
||||
@ -228,6 +229,41 @@ cfgLoadUpdateOption(void)
|
||||
strPtr(cfgOptionStr(cfgOptRepoS3Bucket)));
|
||||
}
|
||||
|
||||
// Check/update compress-type if compress is valid. There should be no references to the compress option outside this block.
|
||||
if (cfgOptionValid(cfgOptCompress))
|
||||
{
|
||||
if (cfgOptionSource(cfgOptCompress) != cfgSourceDefault)
|
||||
{
|
||||
if (cfgOptionSource(cfgOptCompressType) != cfgSourceDefault)
|
||||
{
|
||||
LOG_WARN(
|
||||
"'" CFGOPT_COMPRESS "' and '" CFGOPT_COMPRESS_TYPE "' options should not both be set\n"
|
||||
"HINT: '" CFGOPT_COMPRESS_TYPE "' is preferred and '" CFGOPT_COMPRESS "' is deprecated.");
|
||||
}
|
||||
|
||||
// Set compress-type to none. Eventually the compress option will be deprecated and removed so this reduces code churn
|
||||
// when that happens.
|
||||
if (!cfgOptionBool(cfgOptCompress) && cfgOptionSource(cfgOptCompressType) == cfgSourceDefault)
|
||||
cfgOptionSet(cfgOptCompressType, cfgSourceParam, VARSTR(compressTypeStr(compressTypeNone)));
|
||||
}
|
||||
|
||||
// Now invalidate compress so it can't be used and won't be passed to child processes
|
||||
cfgOptionValidSet(cfgOptCompress, false);
|
||||
cfgOptionSet(cfgOptCompress, cfgSourceDefault, NULL);
|
||||
}
|
||||
|
||||
// Check that selected compress type has been compiled into this binary
|
||||
if (cfgOptionValid(cfgOptCompressType))
|
||||
compressTypePresent(compressTypeEnum(cfgOptionStr(cfgOptCompressType)));
|
||||
|
||||
// Update compress-level default based on the compression type
|
||||
if (cfgOptionValid(cfgOptCompressLevel) && cfgOptionSource(cfgOptCompressLevel) == cfgSourceDefault)
|
||||
{
|
||||
cfgOptionSet(
|
||||
cfgOptCompressLevel, cfgSourceDefault,
|
||||
VARINT(compressLevelDefault(compressTypeEnum(cfgOptionStr(cfgOptCompressType)))));
|
||||
}
|
||||
|
||||
FUNCTION_LOG_RETURN_VOID();
|
||||
}
|
||||
|
||||
|
@ -192,6 +192,18 @@ static const struct option optionList[] =
|
||||
.val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptCompressLevelNetwork,
|
||||
},
|
||||
|
||||
// compress-type option
|
||||
// -----------------------------------------------------------------------------------------------------------------------------
|
||||
{
|
||||
.name = CFGOPT_COMPRESS_TYPE,
|
||||
.has_arg = required_argument,
|
||||
.val = PARSE_OPTION_FLAG | cfgOptCompressType,
|
||||
},
|
||||
{
|
||||
.name = "reset-" CFGOPT_COMPRESS_TYPE,
|
||||
.val = PARSE_OPTION_FLAG | PARSE_RESET_FLAG | cfgOptCompressType,
|
||||
},
|
||||
|
||||
// config option
|
||||
// -----------------------------------------------------------------------------------------------------------------------------
|
||||
{
|
||||
@ -2338,6 +2350,7 @@ static const ConfigOption optionResolveOrder[] =
|
||||
cfgOptCompress,
|
||||
cfgOptCompressLevel,
|
||||
cfgOptCompressLevelNetwork,
|
||||
cfgOptCompressType,
|
||||
cfgOptConfig,
|
||||
cfgOptConfigIncludePath,
|
||||
cfgOptConfigPath,
|
||||
|
@ -422,7 +422,7 @@ infoBackupDataAdd(const InfoBackup *this, const Manifest *manifest)
|
||||
.optionBackupStandby = manData->backupOptionStandby != NULL ? varBool(manData->backupOptionStandby) : false,
|
||||
.optionChecksumPage = manData->backupOptionChecksumPage != NULL ?
|
||||
varBool(manData->backupOptionChecksumPage) : false,
|
||||
.optionCompress = manData->backupOptionCompress,
|
||||
.optionCompress = manData->backupOptionCompressType != compressTypeNone,
|
||||
.optionHardlink = manData->backupOptionHardLink,
|
||||
.optionOnline = manData->backupOptionOnline,
|
||||
};
|
||||
|
@ -129,6 +129,8 @@ STRING_STATIC(MANIFEST_SECTION_TARGET_PATH_DEFAULT_STR, "target:path
|
||||
STRING_STATIC(MANIFEST_KEY_OPTION_CHECKSUM_PAGE_STR, MANIFEST_KEY_OPTION_CHECKSUM_PAGE);
|
||||
#define MANIFEST_KEY_OPTION_COMPRESS "option-compress"
|
||||
STRING_STATIC(MANIFEST_KEY_OPTION_COMPRESS_STR, MANIFEST_KEY_OPTION_COMPRESS);
|
||||
#define MANIFEST_KEY_OPTION_COMPRESS_TYPE "option-compress-type"
|
||||
STRING_STATIC(MANIFEST_KEY_OPTION_COMPRESS_TYPE_STR, MANIFEST_KEY_OPTION_COMPRESS_TYPE);
|
||||
#define MANIFEST_KEY_OPTION_COMPRESS_LEVEL "option-compress-level"
|
||||
STRING_STATIC(MANIFEST_KEY_OPTION_COMPRESS_LEVEL_STR, MANIFEST_KEY_OPTION_COMPRESS_LEVEL);
|
||||
#define MANIFEST_KEY_OPTION_COMPRESS_LEVEL_NETWORK "option-compress-level-network"
|
||||
@ -1030,13 +1032,13 @@ manifestNewBuild(
|
||||
|
||||
/**********************************************************************************************************************************/
|
||||
void
|
||||
manifestBuildValidate(Manifest *this, bool delta, time_t copyStart, bool compress)
|
||||
manifestBuildValidate(Manifest *this, bool delta, time_t copyStart, CompressType compressType)
|
||||
{
|
||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||
FUNCTION_LOG_PARAM(MANIFEST, this);
|
||||
FUNCTION_LOG_PARAM(BOOL, delta);
|
||||
FUNCTION_LOG_PARAM(TIME, copyStart);
|
||||
FUNCTION_LOG_PARAM(TIME, compress);
|
||||
FUNCTION_LOG_PARAM(ENUM, compressType);
|
||||
FUNCTION_LOG_END();
|
||||
|
||||
ASSERT(this != NULL);
|
||||
@ -1054,7 +1056,7 @@ manifestBuildValidate(Manifest *this, bool delta, time_t copyStart, bool compres
|
||||
|
||||
// This value is not needed in this function, but it is needed for resumed manifests and this is last place to set it before
|
||||
// processing begins
|
||||
this->data.backupOptionCompress = compress;
|
||||
this->data.backupOptionCompressType = compressType;
|
||||
}
|
||||
MEM_CONTEXT_END();
|
||||
|
||||
@ -1660,8 +1662,13 @@ manifestLoadCallback(void *callbackData, const String *section, const String *ke
|
||||
manifest->data.backupOptionArchiveCheck = jsonToBool(value);
|
||||
else if (strEq(key, MANIFEST_KEY_OPTION_ARCHIVE_COPY_STR))
|
||||
manifest->data.backupOptionArchiveCopy = jsonToBool(value);
|
||||
// Historically this option meant to add gz compression
|
||||
else if (strEq(key, MANIFEST_KEY_OPTION_COMPRESS_STR))
|
||||
manifest->data.backupOptionCompress = jsonToBool(value);
|
||||
manifest->data.backupOptionCompressType = jsonToBool(value) ? compressTypeGz : compressTypeNone;
|
||||
// This new option allows any type of compression to be specified. It must be parsed after the option above so the
|
||||
// value does not get overwritten. Since options are stored in alpha order this should always be true.
|
||||
else if (strEq(key, MANIFEST_KEY_OPTION_COMPRESS_TYPE_STR))
|
||||
manifest->data.backupOptionCompressType = compressTypeEnum(jsonToStr(value));
|
||||
else if (strEq(key, MANIFEST_KEY_OPTION_HARDLINK_STR))
|
||||
manifest->data.backupOptionHardLink = jsonToBool(value);
|
||||
else if (strEq(key, MANIFEST_KEY_OPTION_ONLINE_STR))
|
||||
@ -1944,9 +1951,11 @@ manifestSaveCallback(void *callbackData, const String *sectionNext, InfoSave *in
|
||||
jsonFromVar(manifest->data.backupOptionChecksumPage));
|
||||
}
|
||||
|
||||
// Set the option when compression is turned on. In older versions this also implied gz compression but in newer versions
|
||||
// the type option must also be set if compression is not gz.
|
||||
infoSaveValue(
|
||||
infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_COMPRESS_STR,
|
||||
jsonFromBool(manifest->data.backupOptionCompress));
|
||||
jsonFromBool(manifest->data.backupOptionCompressType != compressTypeNone));
|
||||
|
||||
if (manifest->data.backupOptionCompressLevel != NULL)
|
||||
{
|
||||
@ -1962,6 +1971,11 @@ manifestSaveCallback(void *callbackData, const String *sectionNext, InfoSave *in
|
||||
jsonFromVar(manifest->data.backupOptionCompressLevelNetwork));
|
||||
}
|
||||
|
||||
// Set the compression type. Older versions will ignore this and assume gz compression if the compress option is set.
|
||||
infoSaveValue(
|
||||
infoSaveData, MANIFEST_SECTION_BACKUP_OPTION_STR, MANIFEST_KEY_OPTION_COMPRESS_TYPE_STR,
|
||||
jsonFromStr(compressTypeStr(manifest->data.backupOptionCompressType)));
|
||||
|
||||
if (manifest->data.backupOptionDelta != NULL)
|
||||
{
|
||||
infoSaveValue(
|
||||
|
@ -11,6 +11,7 @@ nothing is missing or corrupt. It is also useful for reporting, e.g. size of ba
|
||||
#define INFO_MANIFEST_H
|
||||
|
||||
#include "command/backup/common.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/crypto/common.h"
|
||||
#include "common/type/variantList.h"
|
||||
|
||||
@ -66,9 +67,9 @@ typedef struct ManifestData
|
||||
const Variant *backupOptionStandby; // Will the backup be performed from a standby?
|
||||
const Variant *backupOptionBufferSize; // Buffer size used for file/protocol operations
|
||||
const Variant *backupOptionChecksumPage; // Will page checksums be verified?
|
||||
bool backupOptionCompress; // Will compression be used for backup?
|
||||
const Variant *backupOptionCompressLevel; // Level to use for compression
|
||||
const Variant *backupOptionCompressLevelNetwork; // Level to use for network compression
|
||||
CompressType backupOptionCompressType; // Compression type used for the backup
|
||||
const Variant *backupOptionCompressLevel; // Level used for compression (if type not none)
|
||||
const Variant *backupOptionCompressLevelNetwork; // Level used for network compression
|
||||
const Variant *backupOptionDelta; // Will a checksum delta be performed?
|
||||
bool backupOptionHardLink; // Will hardlinks be created in the backup?
|
||||
bool backupOptionOnline; // Will an online backup be performed?
|
||||
@ -161,7 +162,7 @@ Manifest *manifestNewLoad(IoRead *read);
|
||||
Build functions
|
||||
***********************************************************************************************************************************/
|
||||
// Validate the timestamps in the manifest given a copy start time, i.e. all times should be <= the copy start time
|
||||
void manifestBuildValidate(Manifest *this, bool delta, time_t copyStart, bool compress);
|
||||
void manifestBuildValidate(Manifest *this, bool delta, time_t copyStart, CompressType compressType);
|
||||
|
||||
// Create a diff/incr backup by comparing to a previous backup manifest
|
||||
void manifestBuildIncr(Manifest *this, const Manifest *prior, BackupType type, const String *archiveStart);
|
||||
|
@ -4,8 +4,7 @@ Remote Storage Protocol Handler
|
||||
#include "build.auto.h"
|
||||
|
||||
#include "command/backup/pageChecksum.h"
|
||||
#include "common/compress/gz/compress.h"
|
||||
#include "common/compress/gz/decompress.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/crypto/cipherBlock.h"
|
||||
#include "common/crypto/hash.h"
|
||||
#include "common/debug.h"
|
||||
@ -72,10 +71,10 @@ storageRemoteFilterGroup(IoFilterGroup *filterGroup, const Variant *filterList)
|
||||
const String *filterKey = varStr(varLstGet(kvKeyList(filterKv), 0));
|
||||
const VariantList *filterParam = varVarLst(kvGet(filterKv, VARSTR(filterKey)));
|
||||
|
||||
if (strEq(filterKey, GZ_COMPRESS_FILTER_TYPE_STR))
|
||||
ioFilterGroupAdd(filterGroup, gzCompressNewVar(filterParam));
|
||||
else if (strEq(filterKey, GZ_DECOMPRESS_FILTER_TYPE_STR))
|
||||
ioFilterGroupAdd(filterGroup, gzDecompressNew());
|
||||
IoFilter *filter = compressFilterVar(filterKey, filterParam);
|
||||
|
||||
if (filter != NULL)
|
||||
ioFilterGroupAdd(filterGroup, filter);
|
||||
else if (strEq(filterKey, CIPHER_BLOCK_FILTER_TYPE_STR))
|
||||
ioFilterGroupAdd(filterGroup, cipherBlockNewVar(filterParam));
|
||||
else if (strEq(filterKey, CRYPTO_HASH_FILTER_TYPE_STR))
|
||||
|
@ -6,8 +6,7 @@ Remote Storage Read
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "common/compress/gz/compress.h"
|
||||
#include "common/compress/gz/decompress.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/io/read.intern.h"
|
||||
#include "common/log.h"
|
||||
@ -65,7 +64,10 @@ storageReadRemoteOpen(THIS_VOID)
|
||||
{
|
||||
// If the file is compressible add compression filter on the remote
|
||||
if (this->interface.compressible)
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(this->read)), gzCompressNew((int)this->interface.compressLevel));
|
||||
{
|
||||
ioFilterGroupAdd(
|
||||
ioReadFilterGroup(storageReadIo(this->read)), compressFilter(compressTypeGz, (int)this->interface.compressLevel));
|
||||
}
|
||||
|
||||
ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_OPEN_READ_STR);
|
||||
protocolCommandParamAdd(command, VARSTR(this->interface.name));
|
||||
@ -79,7 +81,7 @@ storageReadRemoteOpen(THIS_VOID)
|
||||
|
||||
// If the file is compressible add decompression filter locally
|
||||
if (this->interface.compressible)
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(this->read)), gzDecompressNew());
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(this->read)), decompressFilter(compressTypeGz));
|
||||
}
|
||||
MEM_CONTEXT_TEMP_END();
|
||||
|
||||
|
@ -3,8 +3,7 @@ Remote Storage File write
|
||||
***********************************************************************************************************************************/
|
||||
#include "build.auto.h"
|
||||
|
||||
#include "common/compress/gz/compress.h"
|
||||
#include "common/compress/gz/decompress.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/io/write.intern.h"
|
||||
#include "common/log.h"
|
||||
@ -70,7 +69,7 @@ storageWriteRemoteOpen(THIS_VOID)
|
||||
{
|
||||
// If the file is compressible add decompression filter on the remote
|
||||
if (this->interface.compressible)
|
||||
ioFilterGroupInsert(ioWriteFilterGroup(storageWriteIo(this->write)), 0, gzDecompressNew());
|
||||
ioFilterGroupInsert(ioWriteFilterGroup(storageWriteIo(this->write)), 0, decompressFilter(compressTypeGz));
|
||||
|
||||
ProtocolCommand *command = protocolCommandNew(PROTOCOL_COMMAND_STORAGE_OPEN_WRITE_STR);
|
||||
protocolCommandParamAdd(command, VARSTR(this->interface.name));
|
||||
@ -92,7 +91,11 @@ storageWriteRemoteOpen(THIS_VOID)
|
||||
|
||||
// If the file is compressible add compression filter locally
|
||||
if (this->interface.compressible)
|
||||
ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(this->write)), gzCompressNew((int)this->interface.compressLevel));
|
||||
{
|
||||
ioFilterGroupAdd(
|
||||
ioWriteFilterGroup(storageWriteIo(this->write)),
|
||||
compressFilter(compressTypeGz, (int)this->interface.compressLevel));
|
||||
}
|
||||
|
||||
// Set free callback to ensure remote file is freed
|
||||
memContextCallbackSet(this->memContext, storageWriteRemoteFreeResource, this);
|
||||
|
@ -258,12 +258,13 @@ unit:
|
||||
|
||||
# ----------------------------------------------------------------------------------------------------------------------------
|
||||
- name: compress
|
||||
total: 3
|
||||
total: 2
|
||||
|
||||
coverage:
|
||||
common/compress/gz/common: full
|
||||
common/compress/gz/compress: full
|
||||
common/compress/gz/decompress: full
|
||||
common/compress/helper: full
|
||||
|
||||
# ----------------------------------------------------------------------------------------------------------------------------
|
||||
- name: crypto
|
||||
|
@ -58,7 +58,7 @@ backrest-checksum="[CHECKSUM]"
|
||||
full backup - create pg_stat link, pg_clog dir (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --manifest-save-threshold=3 --buffer-size=[BUFFER-SIZE] --checksum-page --process-max=1 --repo1-type=cifs --type=full --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --manifest-save-threshold=3 --no-online --pg1-path=[TEST_PATH]/db-master/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --repo1-type=cifs --stanza=db --start-fast --type=full
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --manifest-save-threshold=3 --no-online --pg1-path=[TEST_PATH]/db-master/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --repo1-type=cifs --stanza=db --start-fast --type=full
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/33001 (64KB, 33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||
@ -92,8 +92,8 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -139,6 +139,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="none"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -239,7 +240,7 @@ P00 INFO: stop command end: completed successfully
|
||||
full backup - global stop (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --type=full --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 ERROR: [062]: stop file exists for all stanzas
|
||||
@ -261,7 +262,7 @@ P00 INFO: stop command end: completed successfully
|
||||
full backup - stanza stop (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --type=full --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 ERROR: [062]: stop file exists for stanza db
|
||||
@ -289,7 +290,7 @@ P00 INFO: start command end: completed successfully
|
||||
full backup - resume (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --force --checksum-page --delta --type=full --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --exclude=postgresql.auto.conf --exclude=pg_log/ --exclude=pg_log2 --exclude=apipe --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --exclude=postgresql.auto.conf --exclude=pg_log/ --exclude=pg_log2 --exclude=apipe --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 WARN: backup '[BACKUP-FULL-1]' missing manifest removed from backup.info
|
||||
@ -334,8 +335,8 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -385,6 +386,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -754,7 +756,7 @@ restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf
|
||||
incr backup - add tablespace 1 (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||
@ -795,8 +797,8 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -843,6 +845,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="none"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -945,7 +948,7 @@ backrest-checksum="[CHECKSUM]"
|
||||
incr backup - resume and add tablespace 2 (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --delta --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 WARN: backup '[BACKUP-INCR-1]' missing manifest removed from backup.info
|
||||
@ -1008,8 +1011,8 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -1056,6 +1059,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -1168,7 +1172,7 @@ backrest-checksum="[CHECKSUM]"
|
||||
diff backup - drop tablespace 11 (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --delta --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||
@ -1224,8 +1228,8 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -1272,6 +1276,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -1534,7 +1539,7 @@ restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf
|
||||
incr backup - add files and remove tablespace 2 (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 INFO: last backup label = [BACKUP-DIFF-1], version = 0.00
|
||||
@ -1580,8 +1585,8 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -1628,6 +1633,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="none"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -1733,7 +1739,7 @@ backrest-checksum="[CHECKSUM]"
|
||||
incr backup - update files (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 INFO: last backup label = [BACKUP-INCR-3], version = [VERSION-1]
|
||||
@ -1798,8 +1804,8 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -1846,6 +1852,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -1952,7 +1959,7 @@ backrest-checksum="[CHECKSUM]"
|
||||
diff backup - updates since last full (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --delta --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||
@ -2013,8 +2020,8 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -2061,6 +2068,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -2168,11 +2176,11 @@ backrest-checksum="[CHECKSUM]"
|
||||
diff backup - remove files (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --process-max=1 --delta --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --process-max=1 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --delta --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --process-max=1 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||
P00 WARN: diff backup cannot alter compress option to 'true', reset to value in [BACKUP-FULL-2]
|
||||
P00 WARN: diff backup cannot alter compress-type option to 'gz', reset to value in [BACKUP-FULL-2]
|
||||
P00 WARN: diff backup cannot alter hardlink option to 'true', reset to value in [BACKUP-FULL-2]
|
||||
P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-master/db/base-2/base/32768/33001 (64KB, 36%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||
@ -2228,7 +2236,6 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=y
|
||||
compress-level=3
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
@ -2277,6 +2284,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -2383,7 +2391,7 @@ backrest-checksum="[CHECKSUM]"
|
||||
full backup - update file (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --type=full --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=full
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/32768/33001 (64KB, 36%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||
@ -2425,7 +2433,6 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=y
|
||||
compress-level=3
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
@ -2473,6 +2480,7 @@ option-checksum-page=false
|
||||
option-compress=true
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="gz"
|
||||
option-delta=false
|
||||
option-hardlink=true
|
||||
option-online=false
|
||||
@ -2595,7 +2603,7 @@ P00 INFO: expire command end: completed successfully
|
||||
diff backup - add file (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --checksum-page --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 INFO: last backup label = [BACKUP-FULL-3], version = [VERSION-1]
|
||||
@ -2639,7 +2647,6 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=y
|
||||
compress-level=3
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
@ -2688,6 +2695,7 @@ option-checksum-page=false
|
||||
option-compress=true
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="gz"
|
||||
option-delta=false
|
||||
option-hardlink=true
|
||||
option-online=false
|
||||
@ -3026,7 +3034,7 @@ restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf
|
||||
diff backup - option backup-standby reset - backup performed from master (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --log-level-console=info --backup-standby --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=info --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2/base --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --buffer-size=[BUFFER-SIZE] --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=info --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-master/db/base-2/base --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 WARN: option backup-standby is enabled but backup is offline - backups will be performed from the primary
|
||||
@ -3048,7 +3056,6 @@ pg1-path=[TEST_PATH]/db-master/db/base-2/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=y
|
||||
compress-level=3
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
@ -3097,6 +3104,7 @@ option-checksum-page=false
|
||||
option-compress=true
|
||||
option-compress-level=3
|
||||
option-compress-level-network=3
|
||||
option-compress-type="gz"
|
||||
option-delta=false
|
||||
option-hardlink=true
|
||||
option-online=false
|
||||
|
@ -62,9 +62,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -92,9 +92,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=warn
|
||||
@ -149,6 +149,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="none"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -254,9 +255,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -284,9 +285,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=warn
|
||||
@ -345,6 +346,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="none"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -485,9 +487,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -515,9 +517,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=warn
|
||||
@ -573,6 +575,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="none"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -689,9 +692,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -719,9 +722,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=warn
|
||||
@ -777,6 +780,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -901,9 +905,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -931,9 +935,9 @@ pg1-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=warn
|
||||
@ -989,6 +993,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -1130,9 +1135,9 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -1160,9 +1165,9 @@ pg1-path=[TEST_PATH]/db-master/db/base-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=warn
|
||||
@ -1218,6 +1223,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="none"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -1339,9 +1345,9 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -1369,9 +1375,9 @@ pg1-path=[TEST_PATH]/db-master/db/base-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=warn
|
||||
@ -1427,6 +1433,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -1551,9 +1558,9 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -1581,9 +1588,9 @@ pg1-path=[TEST_PATH]/db-master/db/base-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=warn
|
||||
@ -1639,6 +1646,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -1747,7 +1755,7 @@ diff backup - remove files (backup host)
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 WARN: diff backup cannot alter compress option to 'true', reset to value in [BACKUP-FULL-2]
|
||||
P00 WARN: diff backup cannot alter compress-type option to 'gz', reset to value in [BACKUP-FULL-2]
|
||||
P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
||||
P00 WARN: file 'changetime.txt' has timestamp earlier than prior backup, enabling delta checksum
|
||||
P00 WARN: page misalignment in file db-master:[TEST_PATH]/db-master/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt: file size 12 is not divisible by page size 8192
|
||||
@ -1764,9 +1772,9 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -1794,7 +1802,6 @@ pg1-path=[TEST_PATH]/db-master/db/base-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=y
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
db-timeout=45
|
||||
@ -1852,6 +1859,7 @@ option-checksum-page=true
|
||||
option-compress=false
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="none"
|
||||
option-delta=true
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -1971,9 +1979,9 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -2001,7 +2009,6 @@ pg1-path=[TEST_PATH]/db-master/db/base-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=y
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
db-timeout=45
|
||||
@ -2058,6 +2065,7 @@ option-checksum-page=false
|
||||
option-compress=true
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="gz"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -2183,9 +2191,9 @@ tablespace-map=2=[TEST_PATH]/db-master/db/tablespace/ts2-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -2213,7 +2221,6 @@ pg1-path=[TEST_PATH]/db-master/db/base-2
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=y
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
db-timeout=45
|
||||
@ -2271,6 +2278,7 @@ option-checksum-page=false
|
||||
option-compress=true
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="gz"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
@ -2410,7 +2418,7 @@ restore_command = '[BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf
|
||||
diff backup - option backup-standby reset - backup performed from master (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --log-level-console=info --backup-standby --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base-2/base --process-max=2 --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key=<redacted> --repo1-s3-key-secret=<redacted> --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-master --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-master/pgbackrest.conf --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-master/db/base-2/base --process-max=2 --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-s3-bucket=pgbackrest-dev --repo1-s3-endpoint=s3.amazonaws.com --repo1-s3-key=<redacted> --repo1-s3-key-secret=<redacted> --repo1-s3-region=us-east-1 --no-repo1-s3-verify-tls --repo1-type=s3 --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option repo1-retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||
P00 WARN: option backup-standby is enabled but backup is offline - backups will be performed from the primary
|
||||
@ -2434,9 +2442,9 @@ pg1-path=[TEST_PATH]/db-master/db/base-2/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=warn
|
||||
@ -2464,7 +2472,6 @@ pg1-path=[TEST_PATH]/db-master/db/base-2/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=y
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
db-timeout=45
|
||||
@ -2522,6 +2529,7 @@ option-checksum-page=false
|
||||
option-compress=true
|
||||
option-compress-level=3
|
||||
option-compress-level-network=1
|
||||
option-compress-type="gz"
|
||||
option-delta=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
|
@ -1,9 +1,9 @@
|
||||
run 001 - rmt 0, s3 0, enc 1
|
||||
============================
|
||||
run 001 - rmt 0, s3 0, enc 1, cmp gz
|
||||
====================================
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [055]: unable to load info file '[TEST_PATH]/db-master/repo/archive/db/archive.info' or '[TEST_PATH]/db-master/repo/archive/db/archive.info.copy':
|
||||
FileMissingError: unable to open missing file '[TEST_PATH]/db-master/repo/archive/db/archive.info' for read
|
||||
FileMissingError: unable to open missing file '[TEST_PATH]/db-master/repo/archive/db/archive.info.copy' for read
|
||||
@ -73,9 +73,9 @@ db-version="9.4"
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress-type=gz [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=gz --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: pushed WAL file '000000010000000100000001' to the archive
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
@ -91,15 +91,15 @@ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000
|
||||
P00 INFO: found 000000010000000100000001 in the archive
|
||||
P00 INFO: archive-get command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress --archive-async --process-max=2 [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress-type=gz --archive-async --process-max=2 [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --archive-async --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --process-max=2 --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --archive-async --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=gz --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --process-max=2 --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: pushed WAL file '000000010000000100000002' to the archive asynchronously
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --archive-async [TEST_PATH]/db-master/db/base/pg_xlog/00000002.history
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/00000002.history] --archive-async --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/00000002.history] --archive-async --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: pushed WAL file '00000002.history' to the archive asynchronously
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
@ -111,7 +111,7 @@ P00 INFO: archive-get command end: aborted with exception [044]
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [044]: PostgreSQL version 9.4, system-id 1000000000000000094 do not match stanza version 9.4, system-id 5000900090001855000
|
||||
HINT: are you archiving to the correct stanza?
|
||||
P00 INFO: archive-push command end: aborted with exception [044]
|
||||
@ -130,7 +130,7 @@ P00 INFO: stop command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [062]: stop file exists for stanza db
|
||||
P00 INFO: archive-push command end: aborted with exception [062]
|
||||
|
||||
@ -148,7 +148,7 @@ P00 INFO: start command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 WARN: WAL file '000000010000000100000002' already exists in the archive with the same checksum
|
||||
HINT: this is valid in some recovery scenarios but may also indicate a problem.
|
||||
P00 INFO: pushed WAL file '000000010000000100000002' to the archive
|
||||
@ -156,7 +156,7 @@ P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [045]: WAL file '000000010000000100000002' already exists in the archive
|
||||
P00 INFO: archive-push command end: aborted with exception [045]
|
||||
|
||||
@ -180,13 +180,13 @@ P00 INFO: archive-get command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: pushed WAL file '000000010000000100000002.partial' to the archive
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 WARN: WAL file '000000010000000100000002.partial' already exists in the archive with the same checksum
|
||||
HINT: this is valid in some recovery scenarios but may also indicate a problem.
|
||||
P00 INFO: pushed WAL file '000000010000000100000002.partial' to the archive
|
||||
@ -194,6 +194,6 @@ P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [045]: WAL file '000000010000000100000002.partial' already exists in the archive
|
||||
P00 INFO: archive-push command end: aborted with exception [045]
|
||||
|
@ -1,9 +1,9 @@
|
||||
run 002 - rmt 1, s3 1, enc 0
|
||||
============================
|
||||
run 002 - rmt 1, s3 1, enc 0, cmp gz
|
||||
====================================
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 ERROR: [055]: unable to load info file '/archive/db/archive.info' or '/archive/db/archive.info.copy':
|
||||
FileMissingError: raised from remote-0 protocol on 'backup': unable to open '/archive/db/archive.info': No such file or directory
|
||||
FileMissingError: raised from remote-0 protocol on 'backup': unable to open '/archive/db/archive.info.copy': No such file or directory
|
||||
@ -69,9 +69,9 @@ db-version="9.4"
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --cmd-ssh=/usr/bin/ssh --compress [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --cmd-ssh=/usr/bin/ssh --compress-type=gz [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --cmd-ssh=/usr/bin/ssh --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001] --buffer-size=[BUFFER-SIZE] --cmd-ssh=/usr/bin/ssh --compress-level=3 --compress-level-network=1 --compress-type=gz --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: pushed WAL file '000000010000000100000001' to the archive
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
@ -87,15 +87,15 @@ P00 INFO: archive-get command begin [BACKREST-VERSION]: [000000010000000100000
|
||||
P00 INFO: found 000000010000000100000001 in the archive
|
||||
P00 INFO: archive-get command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress --archive-async --process-max=2 [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress-type=gz --archive-async --process-max=2 [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --archive-async --buffer-size=[BUFFER-SIZE] --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --process-max=2 --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --archive-async --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=gz --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --process-max=2 --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: pushed WAL file '000000010000000100000002' to the archive asynchronously
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --archive-async [TEST_PATH]/db-master/db/base/pg_xlog/00000002.history
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/00000002.history] --archive-async --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/00000002.history] --archive-async --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: pushed WAL file '00000002.history' to the archive asynchronously
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
@ -107,7 +107,7 @@ P00 INFO: archive-get command end: aborted with exception [044]
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 ERROR: [044]: PostgreSQL version 9.4, system-id 1000000000000000094 do not match stanza version 9.4, system-id 5000900090001855000
|
||||
HINT: are you archiving to the correct stanza?
|
||||
P00 INFO: archive-push command end: aborted with exception [044]
|
||||
@ -126,7 +126,7 @@ P00 INFO: stop command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 ERROR: [062]: stop file exists for stanza db
|
||||
P00 INFO: archive-push command end: aborted with exception [062]
|
||||
|
||||
@ -144,7 +144,7 @@ P00 INFO: start command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 WARN: WAL file '000000010000000100000002' already exists in the archive with the same checksum
|
||||
HINT: this is valid in some recovery scenarios but may also indicate a problem.
|
||||
P00 INFO: pushed WAL file '000000010000000100000002' to the archive
|
||||
@ -152,7 +152,7 @@ P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 ERROR: [045]: WAL file '000000010000000100000002' already exists in the archive
|
||||
P00 INFO: archive-push command end: aborted with exception [045]
|
||||
|
||||
@ -176,13 +176,13 @@ P00 INFO: archive-get command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: pushed WAL file '000000010000000100000002.partial' to the archive
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 WARN: WAL file '000000010000000100000002.partial' already exists in the archive with the same checksum
|
||||
HINT: this is valid in some recovery scenarios but may also indicate a problem.
|
||||
P00 INFO: pushed WAL file '000000010000000100000002.partial' to the archive
|
||||
@ -190,6 +190,6 @@ P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --no-compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: [[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial] --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=none --config=[TEST_PATH]/db-master/pgbackrest.conf --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log[] --no-log-timestamp --pg1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --repo1-host=backup --repo1-host-cmd=[BACKREST-BIN] --repo1-host-config=[TEST_PATH]/backup/pgbackrest.conf --repo1-host-user=[USER-1] --stanza=db
|
||||
P00 ERROR: [045]: WAL file '000000010000000100000002.partial' already exists in the archive
|
||||
P00 INFO: archive-push command end: aborted with exception [045]
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 001 - rmt 0, cmp 0, error version, s3 0, enc 1
|
||||
==================================================
|
||||
run 001 - rmt 0, cmp none, error version, s3 0, enc 1
|
||||
=====================================================
|
||||
|
||||
stanza-create db - create required data for stanza (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online stanza-create
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 002 - rmt 1, cmp 1, error connect, s3 1, enc 0
|
||||
==================================================
|
||||
run 002 - rmt 1, cmp gz, error connect, s3 1, enc 0
|
||||
===================================================
|
||||
|
||||
stanza-create db - create required data for stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online stanza-create
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 001 - remote 0, s3 0, enc 0
|
||||
===============================
|
||||
run 001 - remote 0, s3 0, enc 0, cmp gz
|
||||
=======================================
|
||||
|
||||
stanza-create db - fail on missing control file (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --no-online --log-level-file=[LOG-LEVEL-FILE] stanza-create
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 002 - remote 1, s3 1, enc 1
|
||||
===============================
|
||||
run 002 - remote 1, s3 1, enc 1, cmp gz
|
||||
=======================================
|
||||
|
||||
stanza-create db - fail on missing control file (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --no-online --log-level-file=[LOG-LEVEL-FILE] stanza-create
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 001 - bkp 0, sby 0, dst db-master, cmp 0, s3 0, enc 0
|
||||
=========================================================
|
||||
run 001 - bkp 0, sby 0, dst db-master, cmp none, s3 0, enc 0
|
||||
============================================================
|
||||
|
||||
stanza-create db - main create stanza info files (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stanza-create
|
||||
@ -82,8 +82,8 @@ pg1-socket-path=[TEST_PATH]/db-master/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -130,8 +130,8 @@ pg1-socket-path=[TEST_PATH]/db-master/db
|
||||
[global]
|
||||
archive-async=y
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -265,8 +265,8 @@ pg1-socket-path=[TEST_PATH]/db-master/db
|
||||
[global]
|
||||
archive-async=y
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 002 - bkp 0, sby 1, dst db-master, cmp 0, s3 0, enc 0
|
||||
=========================================================
|
||||
run 002 - bkp 0, sby 1, dst db-master, cmp none, s3 0, enc 0
|
||||
============================================================
|
||||
|
||||
stanza-create db - main create stanza info files (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stanza-create
|
||||
@ -28,8 +28,8 @@ pg8-path=[TEST_PATH]/db-standby/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -55,8 +55,8 @@ pg1-socket-path=[TEST_PATH]/db-standby/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
@ -111,8 +111,8 @@ pg8-path=[TEST_PATH]/db-standby/db/base
|
||||
[global]
|
||||
archive-async=y
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -140,8 +140,8 @@ pg1-socket-path=[TEST_PATH]/db-standby/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
@ -185,8 +185,8 @@ pg8-path=[TEST_PATH]/db-standby/db/base
|
||||
[global]
|
||||
archive-async=y
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -214,8 +214,8 @@ pg1-socket-path=[TEST_PATH]/db-standby/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 003 - bkp 0, sby 1, dst db-standby, cmp 0, s3 0, enc 0
|
||||
==========================================================
|
||||
run 003 - bkp 0, sby 1, dst db-standby, cmp none, s3 0, enc 0
|
||||
=============================================================
|
||||
|
||||
stanza-create db - main create stanza info files (db-standby host)
|
||||
> [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --stanza=db stanza-create
|
||||
@ -18,9 +18,9 @@ pg1-socket-path=[TEST_PATH]/db-master/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -55,9 +55,9 @@ pg8-path=[TEST_PATH]/db-master/db/base
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
@ -102,9 +102,9 @@ pg1-socket-path=[TEST_PATH]/db-master/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -142,9 +142,9 @@ pg8-path=[TEST_PATH]/db-master/db/base
|
||||
[global]
|
||||
archive-async=y
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
@ -174,9 +174,9 @@ pg1-socket-path=[TEST_PATH]/db-master/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -214,9 +214,9 @@ pg8-path=[TEST_PATH]/db-master/db/base
|
||||
[global]
|
||||
archive-async=y
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 004 - bkp 1, sby 0, dst backup, cmp 1, s3 0, enc 1
|
||||
======================================================
|
||||
run 004 - bkp 1, sby 0, dst backup, cmp gz, s3 0, enc 1
|
||||
=======================================================
|
||||
|
||||
stanza-create db - main create stanza info files (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 005 - bkp 1, sby 1, dst backup, cmp , s3 0, enc 0
|
||||
=====================================================
|
||||
run 005 - bkp 1, sby 1, dst backup, cmp none, s3 0, enc 0
|
||||
=========================================================
|
||||
|
||||
stanza-create db - main create stanza info files (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create
|
||||
@ -18,9 +18,9 @@ pg1-socket-path=[TEST_PATH]/db-master/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -45,9 +45,9 @@ pg1-socket-path=[TEST_PATH]/db-standby/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
@ -86,9 +86,9 @@ pg8-port=6544
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=detail
|
||||
@ -132,9 +132,9 @@ pg1-socket-path=[TEST_PATH]/db-master/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -161,9 +161,9 @@ pg1-socket-path=[TEST_PATH]/db-standby/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
@ -203,9 +203,9 @@ pg8-port=6544
|
||||
[global]
|
||||
archive-async=y
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=detail
|
||||
@ -238,9 +238,9 @@ pg1-socket-path=[TEST_PATH]/db-master/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-master/lock
|
||||
log-level-console=detail
|
||||
@ -267,9 +267,9 @@ pg1-socket-path=[TEST_PATH]/db-standby/db
|
||||
|
||||
[global]
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/db-standby/lock
|
||||
log-level-console=detail
|
||||
@ -309,9 +309,9 @@ pg8-port=6544
|
||||
[global]
|
||||
archive-async=y
|
||||
buffer-size=[BUFFER-SIZE]
|
||||
compress=n
|
||||
compress-level=3
|
||||
compress-level-network=1
|
||||
compress-type=none
|
||||
db-timeout=45
|
||||
lock-path=[TEST_PATH]/backup/lock
|
||||
log-level-console=detail
|
||||
|
@ -1,5 +1,5 @@
|
||||
run 006 - bkp 1, sby 0, dst backup, cmp 1, s3 1, enc 0
|
||||
======================================================
|
||||
run 006 - bkp 1, sby 0, dst backup, cmp gz, s3 1, enc 0
|
||||
=======================================================
|
||||
|
||||
stanza-create db - main create stanza info files (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stanza-create
|
||||
|
@ -476,9 +476,9 @@ sub backupCompare
|
||||
foreach my $strFileKey ($oActualManifest->keys(MANIFEST_SECTION_TARGET_FILE))
|
||||
{
|
||||
# Determine repo size if compression or encryption is enabled
|
||||
my $bCompressed = $oExpectedManifest->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS};
|
||||
my $strCompressType = $oExpectedManifest->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_TYPE};
|
||||
|
||||
if ($bCompressed ||
|
||||
if ($strCompressType ne CFGOPTVAL_COMPRESS_TYPE_NONE ||
|
||||
(defined($oExpectedManifest->{&INI_SECTION_CIPHER}) &&
|
||||
defined($oExpectedManifest->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS})))
|
||||
{
|
||||
@ -487,7 +487,8 @@ sub backupCompare
|
||||
$oActualManifest->test(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_REFERENCE) ?
|
||||
$oActualManifest->numericGet(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_REPO_SIZE, false) :
|
||||
(storageRepo()->info(STORAGE_REPO_BACKUP .
|
||||
"/${strBackup}/${strFileKey}" . ($bCompressed ? '.gz' : '')))->{size};
|
||||
"/${strBackup}/${strFileKey}" .
|
||||
($strCompressType eq CFGOPTVAL_COMPRESS_TYPE_NONE ? '' : ".${strCompressType}")))->{size};
|
||||
|
||||
if (defined($lRepoSize) &&
|
||||
$lRepoSize != $oExpectedManifest->{&MANIFEST_SECTION_TARGET_FILE}{$strFileKey}{&MANIFEST_SUBKEY_SIZE})
|
||||
@ -1031,9 +1032,9 @@ sub configCreate
|
||||
$oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_COMPRESS_LEVEL_NETWORK)} = 1;
|
||||
}
|
||||
|
||||
if (defined($$oParam{bCompress}) && !$$oParam{bCompress})
|
||||
if (defined($oParam->{strCompressType}) && $oParam->{strCompressType} ne CFGOPTVAL_COMPRESS_TYPE_GZ)
|
||||
{
|
||||
$oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_COMPRESS)} = 'n';
|
||||
$oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_COMPRESS_TYPE)} = $oParam->{strCompressType};
|
||||
}
|
||||
|
||||
if ($self->isHostBackup())
|
||||
@ -1200,7 +1201,14 @@ sub configUpdate
|
||||
{
|
||||
foreach my $strKey (keys(%{$hParam->{$strSection}}))
|
||||
{
|
||||
$oConfig->{$strSection}{$strKey} = $hParam->{$strSection}{$strKey};
|
||||
if (defined($hParam->{$strSection}{$strKey}))
|
||||
{
|
||||
$oConfig->{$strSection}{$strKey} = $hParam->{$strSection}{$strKey};
|
||||
}
|
||||
else
|
||||
{
|
||||
delete($oConfig->{$strSection}{$strKey});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1792,6 +1800,8 @@ sub restoreCompare
|
||||
$oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_DELTA}, $oTablespaceMap);
|
||||
$oActualManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_DELTA, undef,
|
||||
$oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_DELTA});
|
||||
$oActualManifest->set(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_COMPRESS_TYPE, undef,
|
||||
$oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_TYPE});
|
||||
|
||||
my $strSectionPath = $oActualManifest->get(MANIFEST_SECTION_BACKUP_TARGET, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_PATH);
|
||||
|
||||
|
@ -43,6 +43,11 @@ use constant ENCRYPTION_KEY_MANIFEST => 'manifest';
|
||||
use constant ENCRYPTION_KEY_BACKUPSET => 'backupset';
|
||||
push @EXPORT, qw(ENCRYPTION_KEY_BACKUPSET);
|
||||
|
||||
use constant NONE => CFGOPTVAL_COMPRESS_TYPE_NONE;
|
||||
push @EXPORT, qw(NONE);
|
||||
use constant GZ => CFGOPTVAL_COMPRESS_TYPE_GZ;
|
||||
push @EXPORT, qw(GZ);
|
||||
|
||||
####################################################################################################################################
|
||||
# setup
|
||||
####################################################################################################################################
|
||||
@ -127,7 +132,7 @@ sub setup
|
||||
# Create db master config
|
||||
$oHostDbMaster->configCreate({
|
||||
strBackupSource => $$oConfigParam{strBackupSource},
|
||||
bCompress => $$oConfigParam{bCompress},
|
||||
strCompressType => $$oConfigParam{strCompressType},
|
||||
bHardlink => $bHostBackup ? undef : $$oConfigParam{bHardLink},
|
||||
bArchiveAsync => $$oConfigParam{bArchiveAsync},
|
||||
bS3 => $$oConfigParam{bS3}});
|
||||
@ -136,7 +141,7 @@ sub setup
|
||||
if (defined($oHostBackup))
|
||||
{
|
||||
$oHostBackup->configCreate({
|
||||
bCompress => $$oConfigParam{bCompress},
|
||||
strCompressType => $$oConfigParam{strCompressType},
|
||||
bHardlink => $$oConfigParam{bHardLink},
|
||||
bS3 => $$oConfigParam{bS3}});
|
||||
}
|
||||
@ -151,7 +156,7 @@ sub setup
|
||||
{
|
||||
$oHostDbStandby->configCreate({
|
||||
strBackupSource => $$oConfigParam{strBackupSource},
|
||||
bCompress => $$oConfigParam{bCompress},
|
||||
strCompressType => $$oConfigParam{strCompressType},
|
||||
bHardlink => $bHostBackup ? undef : $$oConfigParam{bHardLink},
|
||||
bArchiveAsync => $$oConfigParam{bArchiveAsync}});
|
||||
}
|
||||
|
@ -62,14 +62,14 @@ sub run
|
||||
|
||||
foreach my $rhRun
|
||||
(
|
||||
{vm => VM1, remote => false, s3 => true, encrypt => false, delta => true},
|
||||
{vm => VM1, remote => true, s3 => false, encrypt => true, delta => false},
|
||||
{vm => VM2, remote => false, s3 => false, encrypt => true, delta => true},
|
||||
{vm => VM2, remote => true, s3 => true, encrypt => false, delta => false},
|
||||
{vm => VM3, remote => false, s3 => false, encrypt => false, delta => true},
|
||||
{vm => VM3, remote => true, s3 => true, encrypt => true, delta => false},
|
||||
{vm => VM4, remote => false, s3 => false, encrypt => false, delta => false},
|
||||
{vm => VM4, remote => true, s3 => true, encrypt => true, delta => true},
|
||||
{vm => VM1, remote => false, s3 => true, encrypt => false, delta => true, compress => GZ},
|
||||
{vm => VM1, remote => true, s3 => false, encrypt => true, delta => false, compress => GZ},
|
||||
{vm => VM2, remote => false, s3 => false, encrypt => true, delta => true, compress => GZ},
|
||||
{vm => VM2, remote => true, s3 => true, encrypt => false, delta => false, compress => GZ},
|
||||
{vm => VM3, remote => false, s3 => false, encrypt => false, delta => true, compress => GZ},
|
||||
{vm => VM3, remote => true, s3 => true, encrypt => true, delta => false, compress => GZ},
|
||||
{vm => VM4, remote => false, s3 => false, encrypt => false, delta => false, compress => GZ},
|
||||
{vm => VM4, remote => true, s3 => true, encrypt => true, delta => true, compress => GZ},
|
||||
)
|
||||
{
|
||||
# Only run tests for this vm
|
||||
@ -80,13 +80,14 @@ sub run
|
||||
my $bS3 = $rhRun->{s3};
|
||||
my $bEncrypt = $rhRun->{encrypt};
|
||||
my $bDeltaBackup = $rhRun->{delta};
|
||||
my $strCompressType = $rhRun->{compress};
|
||||
|
||||
# Increment the run, log, and decide whether this unit test should be run
|
||||
if (!$self->begin("rmt ${bRemote}, s3 ${bS3}, enc ${bEncrypt}, delta ${bDeltaBackup}")) {next}
|
||||
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bCompress => false, bS3 => $bS3, bRepoEncrypt => $bEncrypt});
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bS3 => $bS3, bRepoEncrypt => $bEncrypt, strCompressType => NONE});
|
||||
|
||||
# If S3 set process max to 2. This seems like the best place for parallel testing since it will help speed S3 processing
|
||||
# without slowing down the other tests too much.
|
||||
@ -114,6 +115,7 @@ sub run
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_BUFFER_SIZE} = 16384;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_CHECKSUM_PAGE} = JSON::PP::true;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS} = JSON::PP::false;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_TYPE} = CFGOPTVAL_COMPRESS_TYPE_NONE;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_LEVEL} = 3;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_LEVEL_NETWORK} = $bRemote ? 1 : 3;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_HARDLINK} = JSON::PP::false;
|
||||
@ -809,8 +811,15 @@ sub run
|
||||
|
||||
$strType = CFGOPTVAL_BACKUP_TYPE_DIFF;
|
||||
|
||||
# Enable compression to ensure a warning is raised
|
||||
$oHostBackup->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_COMPRESS) => 'y'}});
|
||||
# Enable compression to ensure a warning is raised (reset when gz to avoid log churn since it is the default)
|
||||
if ($strCompressType eq GZ)
|
||||
{
|
||||
$oHostBackup->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_COMPRESS_TYPE) => undef}});
|
||||
}
|
||||
else
|
||||
{
|
||||
$oHostBackup->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_COMPRESS_TYPE) => $strCompressType}});
|
||||
}
|
||||
|
||||
# Enable hardlinks (except for s3) to ensure a warning is raised
|
||||
if (!$bS3)
|
||||
@ -841,6 +850,7 @@ sub run
|
||||
|
||||
# Now the compression and hardlink changes will take effect
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS} = JSON::PP::true;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS_TYPE} = $strCompressType;
|
||||
|
||||
if (!$bS3)
|
||||
{
|
||||
|
@ -44,14 +44,14 @@ sub run
|
||||
|
||||
foreach my $rhRun
|
||||
(
|
||||
{vm => VM1, remote => false, s3 => false, encrypt => false, compress => true, error => 0},
|
||||
{vm => VM1, remote => true, s3 => true, encrypt => true, compress => false, error => 1},
|
||||
{vm => VM2, remote => false, s3 => true, encrypt => false, compress => false, error => 0},
|
||||
{vm => VM2, remote => true, s3 => false, encrypt => true, compress => true, error => 0},
|
||||
{vm => VM3, remote => false, s3 => false, encrypt => true, compress => false, error => 0},
|
||||
{vm => VM3, remote => true, s3 => true, encrypt => false, compress => true, error => 1},
|
||||
{vm => VM4, remote => false, s3 => true, encrypt => true, compress => true, error => 0},
|
||||
{vm => VM4, remote => true, s3 => false, encrypt => false, compress => false, error => 0},
|
||||
{vm => VM1, remote => false, s3 => false, encrypt => false, compress => GZ, error => 0},
|
||||
{vm => VM1, remote => true, s3 => true, encrypt => true, compress => GZ, error => 1},
|
||||
{vm => VM2, remote => false, s3 => true, encrypt => false, compress => NONE, error => 0},
|
||||
{vm => VM2, remote => true, s3 => false, encrypt => true, compress => GZ, error => 0},
|
||||
{vm => VM3, remote => false, s3 => false, encrypt => true, compress => NONE, error => 0},
|
||||
{vm => VM3, remote => true, s3 => true, encrypt => false, compress => GZ, error => 1},
|
||||
{vm => VM4, remote => false, s3 => true, encrypt => true, compress => GZ, error => 0},
|
||||
{vm => VM4, remote => true, s3 => false, encrypt => false, compress => NONE, error => 0},
|
||||
)
|
||||
{
|
||||
# Only run tests for this vm
|
||||
@ -61,20 +61,21 @@ sub run
|
||||
my $bRemote = $rhRun->{remote};
|
||||
my $bS3 = $rhRun->{s3};
|
||||
my $bEncrypt = $rhRun->{encrypt};
|
||||
my $bCompress = $rhRun->{compress};
|
||||
my $strCompressType = $rhRun->{compress};
|
||||
my $iError = $rhRun->{error};
|
||||
|
||||
# Increment the run, log, and decide whether this unit test should be run
|
||||
if (!$self->begin("rmt ${bRemote}, cmp ${bCompress}, error " . ($iError ? 'connect' : 'version') . ", s3 ${bS3}, " .
|
||||
"enc ${bEncrypt}")) {next}
|
||||
if (!$self->begin(
|
||||
"rmt ${bRemote}, cmp ${strCompressType}, error " . ($iError ? 'connect' : 'version') .
|
||||
", s3 ${bS3}, enc ${bEncrypt}")) {next}
|
||||
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bCompress => $bCompress, bArchiveAsync => true, bS3 => $bS3,
|
||||
bRepoEncrypt => $bEncrypt});
|
||||
true, $self->expect(), {bHostBackup => $bRemote, strCompressType => $strCompressType, bArchiveAsync => true,
|
||||
bS3 => $bS3, bRepoEncrypt => $bEncrypt});
|
||||
|
||||
# Create compression extension
|
||||
my $strCompressExt = $bCompress ? qw{.} . COMPRESS_EXT : '';
|
||||
my $strCompressExt = $strCompressType ne NONE ? ".${strCompressType}" : '';
|
||||
|
||||
# Create the wal path
|
||||
my $strWalPath = $oHostDbMaster->dbBasePath() . '/pg_xlog';
|
||||
|
@ -40,15 +40,15 @@ sub archiveCheck
|
||||
my $self = shift;
|
||||
my $strArchiveFile = shift;
|
||||
my $strArchiveChecksum = shift;
|
||||
my $bCompress = shift;
|
||||
my $strCompressType = shift;
|
||||
my $strSpoolPath = shift;
|
||||
|
||||
# Build the archive name to check for at the destination
|
||||
my $strArchiveCheck = PG_VERSION_94 . "-1/${strArchiveFile}-${strArchiveChecksum}";
|
||||
|
||||
if ($bCompress)
|
||||
if (defined($strCompressType))
|
||||
{
|
||||
$strArchiveCheck .= '.gz';
|
||||
$strArchiveCheck .= ".${strCompressType}";
|
||||
}
|
||||
|
||||
my $oWait = waitInit(5);
|
||||
@ -82,14 +82,14 @@ sub run
|
||||
|
||||
foreach my $rhRun
|
||||
(
|
||||
{vm => VM1, remote => false, s3 => false, encrypt => false},
|
||||
{vm => VM1, remote => true, s3 => true, encrypt => true},
|
||||
{vm => VM2, remote => false, s3 => true, encrypt => false},
|
||||
{vm => VM2, remote => true, s3 => false, encrypt => true},
|
||||
{vm => VM3, remote => false, s3 => false, encrypt => true},
|
||||
{vm => VM3, remote => true, s3 => true, encrypt => false},
|
||||
{vm => VM4, remote => false, s3 => true, encrypt => true},
|
||||
{vm => VM4, remote => true, s3 => false, encrypt => false},
|
||||
{vm => VM1, remote => false, s3 => false, encrypt => false, compress => GZ},
|
||||
{vm => VM1, remote => true, s3 => true, encrypt => true, compress => GZ},
|
||||
{vm => VM2, remote => false, s3 => true, encrypt => false, compress => GZ},
|
||||
{vm => VM2, remote => true, s3 => false, encrypt => true, compress => GZ},
|
||||
{vm => VM3, remote => false, s3 => false, encrypt => true, compress => GZ},
|
||||
{vm => VM3, remote => true, s3 => true, encrypt => false, compress => GZ},
|
||||
{vm => VM4, remote => false, s3 => true, encrypt => true, compress => GZ},
|
||||
{vm => VM4, remote => true, s3 => false, encrypt => false, compress => GZ},
|
||||
)
|
||||
{
|
||||
# Only run tests for this vm
|
||||
@ -99,12 +99,13 @@ sub run
|
||||
my $bRemote = $rhRun->{remote};
|
||||
my $bS3 = $rhRun->{s3};
|
||||
my $bEncrypt = $rhRun->{encrypt};
|
||||
my $strCompressType = $rhRun->{compress};
|
||||
|
||||
if (!$self->begin("rmt ${bRemote}, s3 ${bS3}, enc ${bEncrypt}")) {next}
|
||||
if (!$self->begin("rmt ${bRemote}, s3 ${bS3}, enc ${bEncrypt}, cmp ${strCompressType}")) {next}
|
||||
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup) = $self->setup(
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bCompress => false, bS3 => $bS3, bRepoEncrypt => $bEncrypt});
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bS3 => $bS3, bRepoEncrypt => $bEncrypt, strCompressType => NONE});
|
||||
|
||||
# Reduce console logging to detail
|
||||
$oHostDbMaster->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_LOG_LEVEL_CONSOLE) => lc(DETAIL)}});
|
||||
@ -153,12 +154,13 @@ sub run
|
||||
my $strArchiveFile = $self->walGenerate($strWalPath, PG_VERSION_94, 2, $strSourceFile);
|
||||
|
||||
$oHostDbMaster->executeSimple(
|
||||
$strCommandPush . ($bRemote ? ' --cmd-ssh=/usr/bin/ssh' : '') . " --compress ${strWalPath}/${strSourceFile}",
|
||||
$strCommandPush . ($bRemote ? ' --cmd-ssh=/usr/bin/ssh' : '') .
|
||||
" --compress-type=${strCompressType} ${strWalPath}/${strSourceFile}",
|
||||
{oLogTest => $self->expect()});
|
||||
push(@stryExpectedWAL, "${strSourceFile}-${strArchiveChecksum}.gz");
|
||||
push(@stryExpectedWAL, "${strSourceFile}-${strArchiveChecksum}.${strCompressType}");
|
||||
|
||||
# Test that the WAL was pushed
|
||||
$self->archiveCheck($strSourceFile, $strArchiveChecksum, true);
|
||||
$self->archiveCheck($strSourceFile, $strArchiveChecksum, $strCompressType);
|
||||
|
||||
# Remove from archive_status
|
||||
storageTest()->remove("${strWalPath}/archive_status/${strSourceFile}.ready");
|
||||
@ -211,7 +213,7 @@ sub run
|
||||
|
||||
$strArchiveTmp =
|
||||
$oHostBackup->repoPath() . '/archive/' . $self->stanza() . '/' . PG_VERSION_94 . '-1/' .
|
||||
substr($strSourceFile, 0, 16) . "/${strSourceFile}-${strArchiveChecksum}." . COMPRESS_EXT . qw{.} .
|
||||
substr($strSourceFile, 0, 16) . "/${strSourceFile}-${strArchiveChecksum}.${strCompressType}" . qw{.} .
|
||||
STORAGE_TEMP_EXT;
|
||||
|
||||
storageTest()->put($strArchiveTmp, 'JUNK');
|
||||
@ -219,9 +221,10 @@ sub run
|
||||
|
||||
# Push the WAL
|
||||
$oHostDbMaster->executeSimple(
|
||||
"${strCommandPush} --compress --archive-async --process-max=2 ${strWalPath}/${strSourceFile}",
|
||||
"${strCommandPush} --compress-type=${strCompressType} --archive-async --process-max=2" .
|
||||
" ${strWalPath}/${strSourceFile}",
|
||||
{oLogTest => $self->expect()});
|
||||
push(@stryExpectedWAL, "${strSourceFile}-${strArchiveChecksum}." . COMPRESS_EXT);
|
||||
push(@stryExpectedWAL, "${strSourceFile}-${strArchiveChecksum}.${strCompressType}");
|
||||
|
||||
# Make sure the temp file no longer exists if it was created
|
||||
if (defined($strArchiveTmp))
|
||||
@ -242,7 +245,7 @@ sub run
|
||||
}
|
||||
|
||||
# Test that the WAL was pushed
|
||||
$self->archiveCheck($strSourceFile, $strArchiveChecksum, true, $oHostDbMaster->spoolPath());
|
||||
$self->archiveCheck($strSourceFile, $strArchiveChecksum, $strCompressType, $oHostDbMaster->spoolPath());
|
||||
|
||||
# Remove from archive_status
|
||||
storageTest()->remove("${strWalPath}/archive_status/${strSourceFile}.ready");
|
||||
@ -381,7 +384,7 @@ sub run
|
||||
$oHostDbMaster->executeSimple(
|
||||
$strCommandPush . " ${strWalPath}/${strSourceFile}.partial",
|
||||
{oLogTest => $self->expect()});
|
||||
$self->archiveCheck("${strSourceFile}.partial", $strArchiveChecksum, false);
|
||||
$self->archiveCheck("${strSourceFile}.partial", $strArchiveChecksum);
|
||||
|
||||
push(@stryExpectedWAL, "${strSourceFile}.partial-${strArchiveChecksum}");
|
||||
|
||||
@ -390,8 +393,7 @@ sub run
|
||||
|
||||
$oHostDbMaster->executeSimple(
|
||||
$strCommandPush . " ${strWalPath}/${strSourceFile}.partial", {oLogTest => $self->expect()});
|
||||
$self->archiveCheck(
|
||||
"${strSourceFile}.partial", $strArchiveChecksum, false);
|
||||
$self->archiveCheck("${strSourceFile}.partial", $strArchiveChecksum);
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
&log(INFO, ' .partial WAL with different checksum');
|
||||
|
@ -53,14 +53,14 @@ sub run
|
||||
|
||||
foreach my $rhRun
|
||||
(
|
||||
{vm => VM1, remote => false, s3 => false, encrypt => true},
|
||||
{vm => VM1, remote => true, s3 => true, encrypt => false},
|
||||
{vm => VM2, remote => false, s3 => true, encrypt => true},
|
||||
{vm => VM2, remote => true, s3 => false, encrypt => false},
|
||||
{vm => VM3, remote => false, s3 => false, encrypt => false},
|
||||
{vm => VM3, remote => true, s3 => true, encrypt => true},
|
||||
{vm => VM4, remote => false, s3 => true, encrypt => false},
|
||||
{vm => VM4, remote => true, s3 => false, encrypt => true},
|
||||
{vm => VM1, remote => false, s3 => false, encrypt => true, compress => GZ},
|
||||
{vm => VM1, remote => true, s3 => true, encrypt => false, compress => GZ},
|
||||
{vm => VM2, remote => false, s3 => true, encrypt => true, compress => GZ},
|
||||
{vm => VM2, remote => true, s3 => false, encrypt => false, compress => GZ},
|
||||
{vm => VM3, remote => false, s3 => false, encrypt => false, compress => GZ},
|
||||
{vm => VM3, remote => true, s3 => true, encrypt => true, compress => GZ},
|
||||
{vm => VM4, remote => false, s3 => true, encrypt => false, compress => GZ},
|
||||
{vm => VM4, remote => true, s3 => false, encrypt => true, compress => GZ},
|
||||
)
|
||||
{
|
||||
# Only run tests for this vm
|
||||
@ -70,13 +70,15 @@ sub run
|
||||
my $bRemote = $rhRun->{remote};
|
||||
my $bS3 = $rhRun->{s3};
|
||||
my $bEncrypt = $rhRun->{encrypt};
|
||||
my $strCompressType = $rhRun->{compress};
|
||||
|
||||
# Increment the run, log, and decide whether this unit test should be run
|
||||
if (!$self->begin("remote ${bRemote}, s3 ${bS3}, enc ${bEncrypt}")) {next}
|
||||
if (!$self->begin("remote ${bRemote}, s3 ${bS3}, enc ${bEncrypt}, cmp ${strCompressType}")) {next}
|
||||
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bS3 => $bS3, bRepoEncrypt => $bEncrypt});
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bS3 => $bS3, bRepoEncrypt => $bEncrypt,
|
||||
strCompressType => $strCompressType});
|
||||
|
||||
# Create the stanza
|
||||
$oHostBackup->stanzaCreate('fail on missing control file', {iExpectedExitStatus => ERROR_FILE_MISSING,
|
||||
@ -192,7 +194,7 @@ sub run
|
||||
$oHostDbMaster->archivePush($strWalPath, $strArchiveTestFile, 1);
|
||||
$self->testResult(
|
||||
sub {storageRepo()->list(STORAGE_REPO_ARCHIVE . qw{/} . PG_VERSION_94 . '-2/0000000100000001')},
|
||||
'000000010000000100000001-' . $self->walGenerateContentChecksum(PG_VERSION_94) . '.' . COMPRESS_EXT,
|
||||
'000000010000000100000001-' . $self->walGenerateContentChecksum(PG_VERSION_94) . ".${strCompressType}",
|
||||
'check that WAL is in the archive at -2');
|
||||
|
||||
# Create the tablespace directory and perform a backup
|
||||
|
@ -62,15 +62,15 @@ sub run
|
||||
foreach my $strBackupDestination (
|
||||
$bS3 || $bHostBackup ? (HOST_BACKUP) : $bHostStandby ? (HOST_DB_MASTER, HOST_DB_STANDBY) : (HOST_DB_MASTER))
|
||||
{
|
||||
my $bCompress = $bHostBackup && !$bHostStandby;
|
||||
my $bRepoEncrypt = ($bCompress && !$bS3) ? true : false;
|
||||
my $strCompressType = $bHostBackup && !$bHostStandby ? GZ : NONE;
|
||||
my $bRepoEncrypt = ($strCompressType ne NONE && !$bS3) ? true : false;
|
||||
|
||||
# Increment the run, log, and decide whether this unit test should be run
|
||||
my $hyVm = vmGet();
|
||||
my $strDbVersionMostRecent = ${$hyVm->{$self->vm()}{&VM_DB_TEST}}[-1];
|
||||
|
||||
next if (!$self->begin(
|
||||
"bkp ${bHostBackup}, sby ${bHostStandby}, dst ${strBackupDestination}, cmp ${bCompress}, s3 ${bS3}, " .
|
||||
"bkp ${bHostBackup}, sby ${bHostStandby}, dst ${strBackupDestination}, cmp ${strCompressType}, s3 ${bS3}, " .
|
||||
"enc ${bRepoEncrypt}",
|
||||
# Use the most recent db version on the expect vm for expect testing
|
||||
$self->vm() eq VM_EXPECT && $self->pgVersion() eq $strDbVersionMostRecent));
|
||||
@ -100,7 +100,7 @@ sub run
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
false, $self->expect(),
|
||||
{bHostBackup => $bHostBackup, bStandby => $bHostStandby, strBackupDestination => $strBackupDestination,
|
||||
bCompress => $bCompress, bArchiveAsync => false, bS3 => $bS3, bRepoEncrypt => $bRepoEncrypt});
|
||||
strCompressType => $strCompressType, bArchiveAsync => false, bS3 => $bS3, bRepoEncrypt => $bRepoEncrypt});
|
||||
|
||||
# Only perform extra tests on certain runs to save time
|
||||
my $bTestLocal = $self->runCurrent() == 1;
|
||||
@ -416,7 +416,7 @@ sub run
|
||||
|
||||
# Kick out a bunch of archive logs to exercise async archiving. Only do this when compressed and remote to slow it
|
||||
# down enough to make it evident that the async process is working.
|
||||
if ($bTestExtra && $bCompress && $strBackupDestination eq HOST_BACKUP)
|
||||
if ($bTestExtra && $strCompressType ne NONE && $strBackupDestination eq HOST_BACKUP)
|
||||
{
|
||||
&log(INFO, ' multiple wal switches to exercise async archiving');
|
||||
$oHostDbMaster->sqlExecute("create table wal_activity (id int)");
|
||||
|
@ -4,7 +4,7 @@ Storage Test Harness
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "common/debug.h"
|
||||
#include "common/compress/gz/decompress.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/user.h"
|
||||
#include "storage/storage.h"
|
||||
|
||||
@ -31,7 +31,8 @@ hrnStorageInfoListCallback(void *callbackData, const StorageInfo *info)
|
||||
{
|
||||
uint64_t size = info->size;
|
||||
|
||||
// If the file is compressed then decompress to get the real size
|
||||
// If the file is compressed then decompress to get the real size. Note that only gz is used in unit tests since
|
||||
// it is the only compression type guaranteed to be present.
|
||||
if (data->fileCompressed)
|
||||
{
|
||||
ASSERT(data->storage != NULL);
|
||||
@ -39,7 +40,7 @@ hrnStorageInfoListCallback(void *callbackData, const StorageInfo *info)
|
||||
StorageRead *read = storageNewReadP(
|
||||
data->storage,
|
||||
data->path != NULL ? strNewFmt("%s/%s", strPtr(data->path), strPtr(info->name)) : info->name);
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), gzDecompressNew());
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), decompressFilter(compressTypeGz));
|
||||
size = bufUsed(storageGetP(read));
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/***********************************************************************************************************************************
|
||||
Test Archive Get Command
|
||||
***********************************************************************************************************************************/
|
||||
#include "common/compress/gz/compress.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/harnessConfig.h"
|
||||
#include "common/harnessFork.h"
|
||||
#include "common/io/bufferRead.h"
|
||||
@ -202,7 +202,7 @@ testRun(void)
|
||||
"repo/archive/test1/10-1/01ABCDEF01ABCDEF/01ABCDEF01ABCDEF01ABCDEF-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.gz"));
|
||||
|
||||
IoFilterGroup *filterGroup = ioWriteFilterGroup(storageWriteIo(destination));
|
||||
ioFilterGroupAdd(filterGroup, gzCompressNew(3));
|
||||
ioFilterGroupAdd(filterGroup, compressFilter(compressTypeGz, 3));
|
||||
ioFilterGroupAdd(
|
||||
filterGroup, cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, BUFSTRDEF("worstpassphraseever"), NULL));
|
||||
storagePutP(destination, buffer);
|
||||
|
@ -52,17 +52,19 @@ testBackupValidateCallback(void *callbackData, const StorageInfo *info)
|
||||
const String *manifestName = info->name;
|
||||
|
||||
// If the file is compressed then decompress to get the real size
|
||||
if (strEndsWithZ(info->name, "." GZ_EXT))
|
||||
CompressType compressType = compressTypeFromName(info->name);
|
||||
|
||||
if (compressType != compressTypeNone)
|
||||
{
|
||||
ASSERT(data->storage != NULL);
|
||||
|
||||
StorageRead *read = storageNewReadP(
|
||||
data->storage,
|
||||
data->path != NULL ? strNewFmt("%s/%s", strPtr(data->path), strPtr(info->name)) : info->name);
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), gzDecompressNew());
|
||||
ioFilterGroupAdd(ioReadFilterGroup(storageReadIo(read)), decompressFilter(compressType));
|
||||
size = bufUsed(storageGetP(read));
|
||||
|
||||
manifestName = strSubN(info->name, 0, strSize(info->name) - strlen("." GZ_EXT));
|
||||
manifestName = strSubN(info->name, 0, strSize(info->name) - strSize(compressExtStr(compressType)));
|
||||
}
|
||||
|
||||
strCatFmt(data->content, ", s=%" PRIu64, size);
|
||||
@ -170,7 +172,7 @@ typedef struct TestBackupPqScriptParam
|
||||
bool backupStandby;
|
||||
bool errorAfterStart;
|
||||
bool noWal; // Don't write test WAL segments
|
||||
bool walCompress; // Compress the archive files
|
||||
CompressType walCompressType; // Compress type for the archive files
|
||||
unsigned int walTotal; // Total WAL to write
|
||||
unsigned int timeline; // Timeline to use for WAL files
|
||||
} TestBackupPqScriptParam;
|
||||
@ -223,10 +225,10 @@ testBackupPqScript(unsigned int pgVersion, time_t backupTimeStart, TestBackupPqS
|
||||
storageRepoWrite(),
|
||||
strNewFmt(
|
||||
STORAGE_REPO_ARCHIVE "/%s/%s-%s%s", strPtr(archiveId), strPtr(strLstGet(walSegmentList, walSegmentIdx)),
|
||||
strPtr(walChecksum), param.walCompress ? "." GZ_EXT : ""));
|
||||
strPtr(walChecksum), strPtr(compressExtStr(param.walCompressType))));
|
||||
|
||||
if (param.walCompress)
|
||||
ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(write)), gzCompressNew(1));
|
||||
if (param.walCompressType != compressTypeNone)
|
||||
ioFilterGroupAdd(ioWriteFilterGroup(storageWriteIo(write)), compressFilter(param.walCompressType, 1));
|
||||
|
||||
storagePutP(write, walBuffer);
|
||||
}
|
||||
@ -438,8 +440,8 @@ testRun(void)
|
||||
varLstAdd(paramList, varNewUInt64(0)); // pgFileChecksumPageLsnLimit
|
||||
varLstAdd(paramList, varNewStr(missingFile)); // repoFile
|
||||
varLstAdd(paramList, varNewBool(false)); // repoFileHasReference
|
||||
varLstAdd(paramList, varNewBool(false)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewUInt(0)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewUInt(compressTypeNone)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewInt(0)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel
|
||||
varLstAdd(paramList, varNewBool(false)); // delta
|
||||
varLstAdd(paramList, NULL); // cipherSubPass
|
||||
@ -513,8 +515,8 @@ testRun(void)
|
||||
varLstAdd(paramList, varNewUInt64(0xFFFFFFFFFFFFFFFF)); // pgFileChecksumPageLsnLimit
|
||||
varLstAdd(paramList, varNewStr(pgFile)); // repoFile
|
||||
varLstAdd(paramList, varNewBool(false)); // repoFileHasReference
|
||||
varLstAdd(paramList, varNewBool(false)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewUInt(1)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewUInt(compressTypeNone)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewInt(1)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel
|
||||
varLstAdd(paramList, varNewBool(false)); // delta
|
||||
varLstAdd(paramList, NULL); // cipherSubPass
|
||||
@ -555,8 +557,8 @@ testRun(void)
|
||||
varLstAdd(paramList, varNewUInt64(0)); // pgFileChecksumPageLsnLimit
|
||||
varLstAdd(paramList, varNewStr(pgFile)); // repoFile
|
||||
varLstAdd(paramList, varNewBool(true)); // repoFileHasReference
|
||||
varLstAdd(paramList, varNewBool(false)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewUInt(1)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewUInt(compressTypeNone)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewInt(1)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel
|
||||
varLstAdd(paramList, varNewBool(true)); // delta
|
||||
varLstAdd(paramList, NULL); // cipherSubPass
|
||||
@ -694,8 +696,8 @@ testRun(void)
|
||||
varLstAdd(paramList, varNewUInt64(0)); // pgFileChecksumPageLsnLimit
|
||||
varLstAdd(paramList, varNewStr(pgFile)); // repoFile
|
||||
varLstAdd(paramList, varNewBool(false)); // repoFileHasReference
|
||||
varLstAdd(paramList, varNewBool(true)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewUInt(3)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewUInt(compressTypeGz)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewInt(3)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel
|
||||
varLstAdd(paramList, varNewBool(false)); // delta
|
||||
varLstAdd(paramList, NULL); // cipherSubPass
|
||||
@ -812,8 +814,8 @@ testRun(void)
|
||||
varLstAdd(paramList, varNewUInt64(0)); // pgFileChecksumPageLsnLimit
|
||||
varLstAdd(paramList, varNewStr(pgFile)); // repoFile
|
||||
varLstAdd(paramList, varNewBool(false)); // repoFileHasReference
|
||||
varLstAdd(paramList, varNewBool(false)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewUInt(0)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewUInt(compressTypeNone)); // repoFileCompress
|
||||
varLstAdd(paramList, varNewInt(0)); // repoFileCompressLevel
|
||||
varLstAdd(paramList, varNewStr(backupLabel)); // backupLabel
|
||||
varLstAdd(paramList, varNewBool(false)); // delta
|
||||
varLstAdd(paramList, varNewStrZ("12345678")); // cipherPass
|
||||
@ -1252,7 +1254,7 @@ testRun(void)
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("cannot resume when compression does not match");
|
||||
|
||||
manifestResume->data.backupOptionCompress = true;
|
||||
manifestResume->data.backupOptionCompressType = compressTypeGz;
|
||||
|
||||
manifestSave(
|
||||
manifestResume,
|
||||
@ -1264,12 +1266,12 @@ testRun(void)
|
||||
|
||||
TEST_RESULT_LOG(
|
||||
"P00 WARN: backup '20191003-105320F' cannot be resumed:"
|
||||
" new compression 'false' does not match resumable compression 'true'");
|
||||
" new compression 'none' does not match resumable compression 'gz'");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
storagePathExistsP(storageRepo(), STRDEF(STORAGE_REPO_BACKUP "/20191003-105320F")), false, "check backup path removed");
|
||||
|
||||
manifestResume->data.backupOptionCompress = false;
|
||||
manifestResume->data.backupOptionCompressType = compressTypeNone;
|
||||
}
|
||||
|
||||
// *****************************************************************************************************************************
|
||||
@ -1409,7 +1411,7 @@ testRun(void)
|
||||
|
||||
TEST_RESULT_LOG(
|
||||
"P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n"
|
||||
"P00 WARN: diff backup cannot alter compress option to 'true', reset to value in [FULL-1]\n"
|
||||
"P00 WARN: diff backup cannot alter compress-type option to 'gz', reset to value in [FULL-1]\n"
|
||||
"P00 WARN: diff backup cannot alter hardlink option to 'true', reset to value in [FULL-1]");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
@ -1613,7 +1615,7 @@ testRun(void)
|
||||
ManifestData *manifestResumeData = (ManifestData *)manifestData(manifestResume);
|
||||
|
||||
manifestResumeData->backupType = backupTypeFull;
|
||||
manifestResumeData->backupOptionCompress = true;
|
||||
manifestResumeData->backupOptionCompressType = compressTypeGz;
|
||||
const String *resumeLabel = backupLabelCreate(backupTypeFull, NULL, backupTimeStart);
|
||||
manifestBackupLabelSet(manifestResume, resumeLabel);
|
||||
|
||||
@ -1669,6 +1671,12 @@ testRun(void)
|
||||
storagePathCreateP(storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/bogus_path", strPtr(resumeLabel)));
|
||||
|
||||
// File is not in manifest
|
||||
storagePutP(
|
||||
storageNewWriteP(
|
||||
storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/global/bogus.gz", strPtr(resumeLabel))),
|
||||
NULL);
|
||||
|
||||
// File has incorrect compression type
|
||||
storagePutP(
|
||||
storageNewWriteP(
|
||||
storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/pg_data/global/bogus", strPtr(resumeLabel))),
|
||||
@ -1702,6 +1710,8 @@ testRun(void)
|
||||
"P00 WARN: resumable backup 20191003-105320F of same type exists -- remove invalid files and resume\n"
|
||||
"P00 DETAIL: remove path '{[path]}/repo/backup/test1/20191003-105320F/pg_data/bogus_path' from resumed backup\n"
|
||||
"P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F/pg_data/global/bogus' from resumed backup"
|
||||
" (mismatched compression type)\n"
|
||||
"P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F/pg_data/global/bogus.gz' from resumed backup"
|
||||
" (missing in manifest)\n"
|
||||
"P00 DETAIL: remove file '{[path]}/repo/backup/test1/20191003-105320F/pg_data/global/pg_control.gz' from resumed"
|
||||
" backup (no checksum in resumed manifest)\n"
|
||||
@ -1761,6 +1771,7 @@ testRun(void)
|
||||
strLstAdd(argList, strNewFmt("--" CFGOPT_PG1_PATH "=%s", strPtr(pg1Path)));
|
||||
strLstAddZ(argList, "--" CFGOPT_REPO1_RETENTION_FULL "=1");
|
||||
strLstAddZ(argList, "--" CFGOPT_TYPE "=" BACKUP_TYPE_DIFF);
|
||||
strLstAddZ(argList, "--no-" CFGOPT_COMPRESS);
|
||||
strLstAddZ(argList, "--" CFGOPT_STOP_AUTO);
|
||||
strLstAddZ(argList, "--" CFGOPT_REPO1_HARDLINK);
|
||||
harnessCfgLoad(cfgCmdBackup, argList);
|
||||
@ -1777,7 +1788,7 @@ testRun(void)
|
||||
|
||||
manifestResumeData->backupType = backupTypeDiff;
|
||||
manifestResumeData->backupLabelPrior = manifestData(manifestPrior)->backupLabel;
|
||||
manifestResumeData->backupOptionCompress = true;
|
||||
manifestResumeData->backupOptionCompressType = compressTypeGz;
|
||||
const String *resumeLabel = backupLabelCreate(backupTypeDiff, manifestData(manifestPrior)->backupLabel, backupTimeStart);
|
||||
manifestBackupLabelSet(manifestResume, resumeLabel);
|
||||
|
||||
@ -1834,6 +1845,7 @@ testRun(void)
|
||||
// Check log
|
||||
TEST_RESULT_LOG(
|
||||
"P00 INFO: last backup label = 20191003-105320F, version = " PROJECT_VERSION "\n"
|
||||
"P00 WARN: diff backup cannot alter compress-type option to 'none', reset to value in 20191003-105320F\n"
|
||||
"P00 INFO: execute exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n"
|
||||
"P00 INFO: backup start archive = 0000000105D9759000000000, lsn = 5d97590/0\n"
|
||||
"P00 WARN: file 'time-mismatch2' has timestamp in the future, enabling delta checksum\n"
|
||||
@ -1953,7 +1965,7 @@ testRun(void)
|
||||
storagePathRemoveP(storageRepoWrite(), STRDEF(STORAGE_REPO_BACKUP "/20191016-042640F"), .recurse = true);
|
||||
|
||||
// Run backup
|
||||
testBackupPqScriptP(PG_VERSION_96, backupTimeStart, .backupStandby = true, .walCompress = true);
|
||||
testBackupPqScriptP(PG_VERSION_96, backupTimeStart, .backupStandby = true, .walCompressType = compressTypeGz);
|
||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
||||
|
||||
// Set log level back to detail
|
||||
@ -2089,7 +2101,7 @@ testRun(void)
|
||||
((Storage *)storageRepoWrite())->interface.feature ^= 1 << storageFeatureHardLink;
|
||||
|
||||
// Run backup
|
||||
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .walCompress = true, .walTotal = 3);
|
||||
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .walCompressType = compressTypeGz, .walTotal = 3);
|
||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
||||
|
||||
// Reset storage features
|
||||
|
@ -149,8 +149,7 @@ testRun(void)
|
||||
" --buffer-size buffer size for file operations\n"
|
||||
" [current=32768, default=4194304]\n"
|
||||
" --cmd-ssh path to ssh client executable [default=ssh]\n"
|
||||
" --compress-level-network compression level for network transfer when\n"
|
||||
" compress=n [default=3]\n"
|
||||
" --compress-level-network network compression level [default=3]\n"
|
||||
" --config pgBackRest configuration file\n"
|
||||
" [default=/etc/pgbackrest/pgbackrest.conf]\n"
|
||||
" --config-include-path path to additional pgBackRest configuration\n"
|
||||
|
@ -1,7 +1,7 @@
|
||||
/***********************************************************************************************************************************
|
||||
Test Restore Command
|
||||
***********************************************************************************************************************************/
|
||||
#include "common/compress/gz/compress.h"
|
||||
#include "common/compress/helper.h"
|
||||
#include "common/crypto/cipherBlock.h"
|
||||
#include "common/io/io.h"
|
||||
#include "common/io/bufferRead.h"
|
||||
@ -196,7 +196,7 @@ testRun(void)
|
||||
StorageWrite *ceRepoFile = storageNewWriteP(
|
||||
storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/%s.gz", strPtr(repoFileReferenceFull), strPtr(repoFile1)));
|
||||
IoFilterGroup *filterGroup = ioWriteFilterGroup(storageWriteIo(ceRepoFile));
|
||||
ioFilterGroupAdd(filterGroup, gzCompressNew(3));
|
||||
ioFilterGroupAdd(filterGroup, compressFilter(compressTypeGz, 3));
|
||||
ioFilterGroupAdd(filterGroup, cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, BUFSTRDEF("badpass"), NULL));
|
||||
|
||||
storagePutP(ceRepoFile, BUFSTRDEF("acefile"));
|
||||
@ -316,7 +316,7 @@ testRun(void)
|
||||
VariantList *paramList = varLstNew();
|
||||
varLstAdd(paramList, varNewStr(repoFile1));
|
||||
varLstAdd(paramList, varNewStr(repoFileReferenceFull));
|
||||
varLstAdd(paramList, varNewBool(false));
|
||||
varLstAdd(paramList, varNewUInt(compressTypeNone));
|
||||
varLstAdd(paramList, varNewStrZ("protocol"));
|
||||
varLstAdd(paramList, varNewStrZ("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"));
|
||||
varLstAdd(paramList, varNewBool(false));
|
||||
@ -347,7 +347,7 @@ testRun(void)
|
||||
paramList = varLstNew();
|
||||
varLstAdd(paramList, varNewStr(repoFile1));
|
||||
varLstAdd(paramList, varNewStr(repoFileReferenceFull));
|
||||
varLstAdd(paramList, varNewBool(false));
|
||||
varLstAdd(paramList, varNewUInt(compressTypeNone));
|
||||
varLstAdd(paramList, varNewStrZ("protocol"));
|
||||
varLstAdd(paramList, varNewStrZ("9bc8ab2dda60ef4beed07d1e19ce0676d5edde67"));
|
||||
varLstAdd(paramList, varNewBool(false));
|
||||
|
@ -5,6 +5,7 @@ Test Compression
|
||||
#include "common/io/bufferRead.h"
|
||||
#include "common/io/bufferWrite.h"
|
||||
#include "common/io/io.h"
|
||||
#include "storage/posix/storage.h"
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Compress data
|
||||
@ -35,7 +36,7 @@ testCompress(IoFilter *compress, Buffer *decompressed, size_t inputSize, size_t
|
||||
}
|
||||
|
||||
ioWriteClose(write);
|
||||
memContextFree(((GzCompress *)ioFilterDriver(compress))->memContext);
|
||||
ioFilterFree(compress);
|
||||
|
||||
return compressed;
|
||||
}
|
||||
@ -63,11 +64,107 @@ testDecompress(IoFilter *decompress, Buffer *compressed, size_t inputSize, size_
|
||||
|
||||
ioReadClose(read);
|
||||
bufFree(output);
|
||||
memContextFree(((GzDecompress *)ioFilterDriver(decompress))->memContext);
|
||||
ioFilterFree(decompress);
|
||||
|
||||
return decompressed;
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Standard test suite to be applied to all compression types
|
||||
***********************************************************************************************************************************/
|
||||
static void
|
||||
testSuite(CompressType type, const char *decompressCmd)
|
||||
{
|
||||
const char *simpleData = "A simple string";
|
||||
Buffer *compressed = NULL;
|
||||
Buffer *decompressed = bufNewC(simpleData, strlen(simpleData));
|
||||
|
||||
VariantList *compressParamList = varLstNew();
|
||||
varLstAdd(compressParamList, varNewUInt(1));
|
||||
|
||||
// Create default storage object for testing
|
||||
Storage *storageTest = storagePosixNew(strNew(testPath()), STORAGE_MODE_FILE_DEFAULT, STORAGE_MODE_PATH_DEFAULT, true, NULL);
|
||||
|
||||
TEST_TITLE("simple data");
|
||||
|
||||
TEST_ASSIGN(
|
||||
compressed,
|
||||
testCompress(
|
||||
compressFilterVar(strNewFmt("%sCompress", strPtr(compressTypeStr(type))), compressParamList), decompressed, 1024,
|
||||
256 * 1024 * 1024),
|
||||
"simple data - compress large in/large out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(compressed, testCompress(compressFilter(type, 1), decompressed, 1024, 1)), true,
|
||||
"simple data - compress large in/small out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(compressed, testCompress(compressFilter(type, 1), decompressed, 1, 1024)), true,
|
||||
"simple data - compress small in/large out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(compressed, testCompress(compressFilter(type, 1), decompressed, 1, 1)), true,
|
||||
"simple data - compress small in/small out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(
|
||||
decompressed,
|
||||
testDecompress(
|
||||
compressFilterVar(strNewFmt("%sDecompress", strPtr(compressTypeStr(type))), NULL), compressed, 1024, 1024)),
|
||||
true, "simple data - decompress large in/large out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(decompressed, testDecompress(decompressFilter(type), compressed, 1024, 1)), true,
|
||||
"simple data - decompress large in/small out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(decompressed, testDecompress(decompressFilter(type), compressed, 1, 1024)), true,
|
||||
"simple data - decompress small in/large out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(decompressed, testDecompress(decompressFilter(type), compressed, 1, 1)), true,
|
||||
"simple data - decompress small in/small out buffer");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
if (decompressCmd != NULL)
|
||||
{
|
||||
TEST_TITLE("compressed output can be decompressed with command-line tool");
|
||||
|
||||
storagePutP(storageNewWriteP(storageTest, STRDEF("test.cmp")), compressed);
|
||||
TEST_SYSTEM_FMT("%s {[path]}/test.cmp > {[path]}/test.out", decompressCmd);
|
||||
TEST_RESULT_BOOL(bufEq(decompressed, storageGetP(storageNewReadP(storageTest, STRDEF("test.out")))), true, "check output");
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("error on no compression data");
|
||||
|
||||
TEST_ERROR(testDecompress(decompressFilter(type), bufNew(0), 1, 1), FormatError, "unexpected eof in compressed data");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("error on truncated compression data");
|
||||
|
||||
Buffer *truncated = bufNew(0);
|
||||
bufCatSub(truncated, compressed, 0, bufUsed(compressed) - 1);
|
||||
|
||||
TEST_RESULT_UINT(bufUsed(truncated), bufUsed(compressed) - 1, "check truncated buffer size");
|
||||
TEST_ERROR(testDecompress(decompressFilter(type), truncated, 512, 512), FormatError, "unexpected eof in compressed data");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compress a large zero input buffer into small output buffer");
|
||||
|
||||
decompressed = bufNew(1024 * 1024 - 1);
|
||||
memset(bufPtr(decompressed), 0, bufSize(decompressed));
|
||||
bufUsedSet(decompressed, bufSize(decompressed));
|
||||
|
||||
TEST_ASSIGN(
|
||||
compressed, testCompress(compressFilter(type, 3), decompressed, bufSize(decompressed), 1024),
|
||||
"zero data - compress large in/small out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(decompressed, testDecompress(decompressFilter(type), compressed, bufSize(compressed), 1024 * 256)), true,
|
||||
"zero data - decompress large in/small out buffer");
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Test Run
|
||||
***********************************************************************************************************************************/
|
||||
@ -77,8 +174,14 @@ testRun(void)
|
||||
FUNCTION_HARNESS_VOID();
|
||||
|
||||
// *****************************************************************************************************************************
|
||||
if (testBegin("gzError"))
|
||||
if (testBegin("gz"))
|
||||
{
|
||||
// Run standard test suite
|
||||
testSuite(compressTypeGz, "gzip -dc");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("gzError()");
|
||||
|
||||
TEST_RESULT_INT(gzError(Z_OK), Z_OK, "check ok");
|
||||
TEST_RESULT_INT(gzError(Z_STREAM_END), Z_STREAM_END, "check stream end");
|
||||
TEST_ERROR(gzError(Z_NEED_DICT), AssertError, "zlib threw error: [2] need dictionary");
|
||||
@ -89,91 +192,73 @@ testRun(void)
|
||||
TEST_ERROR(gzError(Z_BUF_ERROR), AssertError, "zlib threw error: [-5] no space in buffer");
|
||||
TEST_ERROR(gzError(Z_VERSION_ERROR), FormatError, "zlib threw error: [-6] incompatible version");
|
||||
TEST_ERROR(gzError(999), AssertError, "zlib threw error: [999] unknown error");
|
||||
}
|
||||
|
||||
// *****************************************************************************************************************************
|
||||
if (testBegin("GzCompress and GzDecompress"))
|
||||
{
|
||||
const char *simpleData = "A simple string";
|
||||
Buffer *compressed = NULL;
|
||||
Buffer *decompressed = bufNewC(simpleData, strlen(simpleData));
|
||||
|
||||
VariantList *compressParamList = varLstNew();
|
||||
varLstAdd(compressParamList, varNewUInt(3));
|
||||
varLstAdd(compressParamList, varNewBool(false));
|
||||
|
||||
TEST_ASSIGN(
|
||||
compressed, testCompress(gzCompressNewVar(compressParamList), decompressed, 1024, 1024),
|
||||
"simple data - compress large in/large out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(compressed, testCompress(gzCompressNew(3), decompressed, 1024, 1)), true,
|
||||
"simple data - compress large in/small out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(compressed, testCompress(gzCompressNew(3), decompressed, 1, 1024)), true,
|
||||
"simple data - compress small in/large out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(compressed, testCompress(gzCompressNew(3), decompressed, 1, 1)), true,
|
||||
"simple data - compress small in/small out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(decompressed, testDecompress(gzDecompressNew(), compressed, 1024, 1024)), true,
|
||||
"simple data - decompress large in/large out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(decompressed, testDecompress(gzDecompressNew(), compressed, 1024, 1)), true,
|
||||
"simple data - decompress large in/small out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(decompressed, testDecompress(gzDecompressNew(), compressed, 1, 1024)), true,
|
||||
"simple data - decompress small in/large out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(decompressed, testDecompress(gzDecompressNew(), compressed, 1, 1)), true,
|
||||
"simple data - decompress small in/small out buffer");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("error on no compression data");
|
||||
TEST_TITLE("gzDecompressToLog() and gzCompressToLog()");
|
||||
|
||||
TEST_ERROR(testDecompress(gzDecompressNew(), bufNew(0), 1, 1), FormatError, "unexpected eof in compressed data");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("error on truncated compression data");
|
||||
|
||||
Buffer *truncated = bufNew(0);
|
||||
bufCatSub(truncated, compressed, 0, bufUsed(compressed) - 1);
|
||||
|
||||
TEST_RESULT_UINT(bufUsed(truncated), bufUsed(compressed) - 1, "check truncated buffer size");
|
||||
TEST_ERROR(testDecompress(gzDecompressNew(), truncated, 512, 512), FormatError, "unexpected eof in compressed data");
|
||||
|
||||
// Compress a large zero input buffer into small output buffer
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
decompressed = bufNew(1024 * 1024 - 1);
|
||||
memset(bufPtr(decompressed), 0, bufSize(decompressed));
|
||||
bufUsedSet(decompressed, bufSize(decompressed));
|
||||
|
||||
TEST_ASSIGN(
|
||||
compressed, testCompress(gzCompressNew(3), decompressed, bufSize(decompressed), 1024),
|
||||
"zero data - compress large in/small out buffer");
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
bufEq(decompressed, testDecompress(gzDecompressNew(), compressed, bufSize(compressed), 1024 * 256)), true,
|
||||
"zero data - decompress large in/small out buffer");
|
||||
}
|
||||
|
||||
// *****************************************************************************************************************************
|
||||
if (testBegin("gzDecompressToLog() and gzCompressToLog()"))
|
||||
{
|
||||
GzDecompress *decompress = (GzDecompress *)ioFilterDriver(gzDecompressNew());
|
||||
|
||||
TEST_RESULT_STR_Z(gzDecompressToLog(decompress), "{inputSame: false, done: false, availIn: 0}", "format object");
|
||||
|
||||
decompress->inputSame = true;
|
||||
decompress->done = true;
|
||||
|
||||
TEST_RESULT_STR_Z(gzDecompressToLog(decompress), "{inputSame: true, done: true, availIn: 0}", "format object");
|
||||
}
|
||||
|
||||
// Test everything in the helper that is not tested in the individual compression type tests
|
||||
// *****************************************************************************************************************************
|
||||
if (testBegin("helper"))
|
||||
{
|
||||
TEST_TITLE("compressTypeEnum()");
|
||||
|
||||
TEST_RESULT_UINT(compressTypeEnum(STRDEF("none")), compressTypeNone, "none enum");
|
||||
TEST_RESULT_UINT(compressTypeEnum(STRDEF("gz")), compressTypeGz, "gz enum");
|
||||
TEST_ERROR(compressTypeEnum(strNew(BOGUS_STR)), AssertError, "invalid compression type 'BOGUS'");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compressTypePresent()");
|
||||
|
||||
TEST_RESULT_VOID(compressTypePresent(compressTypeNone), "type none always present");
|
||||
TEST_ERROR(compressTypePresent(compressTypeZst), OptionInvalidValueError, "pgBackRest not compiled with zst support");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compressTypeFromName()");
|
||||
|
||||
TEST_RESULT_UINT(compressTypeFromName(STRDEF("file")), compressTypeNone, "type from name");
|
||||
TEST_RESULT_UINT(compressTypeFromName(STRDEF("file.gz")), compressTypeGz, "type from name");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compressFilterVar()");
|
||||
|
||||
TEST_RESULT_PTR(compressFilterVar(STRDEF("BOGUS"), 0), NULL, "no filter match");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compressExtStr()");
|
||||
|
||||
TEST_RESULT_STR_Z(compressExtStr(compressTypeNone), "", "one ext");
|
||||
TEST_RESULT_STR_Z(compressExtStr(compressTypeGz), ".gz", "gz ext");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compressExtCat()");
|
||||
|
||||
String *file = strNew("file");
|
||||
TEST_RESULT_VOID(compressExtCat(file, compressTypeGz), "cat gz ext");
|
||||
TEST_RESULT_STR_Z(file, "file.gz", " check gz ext");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compressExtStrip()");
|
||||
|
||||
TEST_ERROR(compressExtStrip(STRDEF("file"), compressTypeGz), FormatError, "'file' must have '.gz' extension");
|
||||
TEST_RESULT_STR_Z(compressExtStrip(STRDEF("file"), compressTypeNone), "file", "nothing to strip");
|
||||
TEST_RESULT_STR_Z(compressExtStrip(STRDEF("file.gz"), compressTypeGz), "file", "strip gz");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compressLevelDefault()");
|
||||
|
||||
TEST_RESULT_INT(compressLevelDefault(compressTypeNone), 0, "none level=0");
|
||||
TEST_RESULT_INT(compressLevelDefault(compressTypeGz), 6, "gz level=6");
|
||||
}
|
||||
|
||||
FUNCTION_HARNESS_RESULT_VOID();
|
||||
}
|
||||
|
@ -264,9 +264,52 @@ testRun(void)
|
||||
|
||||
TEST_RESULT_VOID(harnessCfgLoad(cfgCmdArchiveGet, argList), "valid bucket name");
|
||||
TEST_RESULT_STR_Z(cfgOptionStr(cfgOptRepoS3Bucket), "cool-bucket", " check bucket value");
|
||||
TEST_RESULT_BOOL(cfgOptionValid(cfgOptCompress), false, " compress is not valid");
|
||||
|
||||
unsetenv("PGBACKREST_REPO1_S3_KEY");
|
||||
unsetenv("PGBACKREST_REPO1_S3_KEY_SECRET");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compress-type=none when compress=n");
|
||||
|
||||
argList = strLstNew();
|
||||
strLstAddZ(argList, "--" CFGOPT_STANZA "=db");
|
||||
strLstAddZ(argList, "--no-" CFGOPT_COMPRESS);
|
||||
|
||||
TEST_RESULT_VOID(harnessCfgLoad(cfgCmdArchivePush, argList), "load config");
|
||||
TEST_RESULT_STR_Z(cfgOptionStr(cfgOptCompressType), "none", " compress-type=none");
|
||||
TEST_RESULT_INT(cfgOptionInt(cfgOptCompressLevel), 0, " compress-level=0");
|
||||
TEST_RESULT_BOOL(cfgOptionValid(cfgOptCompress), false, " compress is not valid");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("compress-type=gz when compress=y");
|
||||
|
||||
argList = strLstNew();
|
||||
strLstAddZ(argList, "--" CFGOPT_STANZA "=db");
|
||||
strLstAddZ(argList, "--" CFGOPT_COMPRESS);
|
||||
strLstAddZ(argList, "--" CFGOPT_COMPRESS_LEVEL "=9");
|
||||
|
||||
TEST_RESULT_VOID(harnessCfgLoad(cfgCmdArchivePush, argList), "load config");
|
||||
TEST_RESULT_STR_Z(cfgOptionStr(cfgOptCompressType), "gz", " compress-type=gz");
|
||||
TEST_RESULT_INT(cfgOptionInt(cfgOptCompressLevel), 9, " compress-level=9");
|
||||
TEST_RESULT_BOOL(cfgOptionValid(cfgOptCompress), false, " compress is not valid");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("warn when compress-type and compress both set");
|
||||
|
||||
argList = strLstNew();
|
||||
strLstAddZ(argList, "--" CFGOPT_STANZA "=db");
|
||||
strLstAddZ(argList, "--no-" CFGOPT_COMPRESS);
|
||||
strLstAddZ(argList, "--" CFGOPT_COMPRESS_TYPE "=gz");
|
||||
|
||||
TEST_RESULT_VOID(harnessCfgLoad(cfgCmdArchivePush, argList), "load config");
|
||||
TEST_RESULT_STR_Z(cfgOptionStr(cfgOptCompressType), "gz", " compress-type=gz");
|
||||
TEST_RESULT_INT(cfgOptionInt(cfgOptCompressLevel), 6, " compress-level=6");
|
||||
TEST_RESULT_BOOL(cfgOptionValid(cfgOptCompress), false, " compress is not valid");
|
||||
|
||||
harnessLogResult(
|
||||
"P00 WARN: 'compress' and 'compress-type' options should not both be set\n"
|
||||
" HINT: 'compress-type' is preferred and 'compress' is deprecated.");
|
||||
}
|
||||
|
||||
// *****************************************************************************************************************************
|
||||
|
@ -115,6 +115,7 @@ testRun(void)
|
||||
"option-archive-copy=false\n" \
|
||||
"option-checksum-page=false\n" \
|
||||
"option-compress=false\n" \
|
||||
"option-compress-type=\"none\"\n" \
|
||||
"option-hardlink=false\n" \
|
||||
"option-online=false\n"
|
||||
|
||||
@ -132,11 +133,13 @@ testRun(void)
|
||||
|
||||
#define TEST_MANIFEST_OPTION_ONLINE_FALSE \
|
||||
"option-compress=false\n" \
|
||||
"option-compress-type=\"none\"\n" \
|
||||
"option-hardlink=false\n" \
|
||||
"option-online=false\n"
|
||||
|
||||
#define TEST_MANIFEST_OPTION_ONLINE_TRUE \
|
||||
"option-compress=false\n" \
|
||||
"option-compress-type=\"none\"\n" \
|
||||
"option-hardlink=false\n" \
|
||||
"option-online=true\n"
|
||||
|
||||
@ -1173,7 +1176,7 @@ testRun(void)
|
||||
TEST_RESULT_VOID(manifestBuildValidate(manifest, true, 1482182860, false), "validate manifest");
|
||||
TEST_RESULT_UINT(manifest->data.backupTimestampCopyStart, 1482182861, "check copy start");
|
||||
TEST_RESULT_BOOL(varBool(manifest->data.backupOptionDelta), true, "check delta");
|
||||
TEST_RESULT_BOOL(manifest->data.backupOptionCompress, false, "check compress");
|
||||
TEST_RESULT_UINT(manifest->data.backupOptionCompressType, compressTypeNone, "check compress");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("timestamp in past does not force delta");
|
||||
@ -1194,7 +1197,7 @@ testRun(void)
|
||||
TEST_RESULT_VOID(manifestBuildValidate(manifest, false, 1482182859, true), "validate manifest");
|
||||
TEST_RESULT_UINT(manifest->data.backupTimestampCopyStart, 1482182859, "check copy start");
|
||||
TEST_RESULT_BOOL(varBool(manifest->data.backupOptionDelta), true, "check delta");
|
||||
TEST_RESULT_BOOL(manifest->data.backupOptionCompress, true, "check compress");
|
||||
TEST_RESULT_UINT(manifest->data.backupOptionCompressType, compressTypeGz, "check compress");
|
||||
|
||||
TEST_RESULT_LOG("P00 WARN: file 'PG_VERSION' has timestamp in the future, enabling delta checksum");
|
||||
}
|
||||
@ -1221,7 +1224,8 @@ testRun(void)
|
||||
"[backup:option]\n" \
|
||||
"option-archive-check=false\n" \
|
||||
"option-archive-copy=false\n" \
|
||||
"option-compress=false\n"
|
||||
"option-compress=false\n" \
|
||||
"option-compress-type=\"none\"\n"
|
||||
|
||||
#define TEST_MANIFEST_HEADER_POST \
|
||||
"option-hardlink=false\n" \
|
||||
@ -1566,6 +1570,7 @@ testRun(void)
|
||||
"option-archive-check=true\n"
|
||||
"option-archive-copy=true\n"
|
||||
"option-compress=false\n"
|
||||
"option-compress-type=\"none\"\n"
|
||||
"option-hardlink=false\n"
|
||||
"option-online=false\n"
|
||||
"\n"
|
||||
@ -1651,6 +1656,7 @@ testRun(void)
|
||||
"option-compress=true\n" \
|
||||
"option-compress-level=3\n" \
|
||||
"option-compress-level-network=6\n" \
|
||||
"option-compress-type=\"gz\"\n" \
|
||||
"option-delta=false\n" \
|
||||
"option-hardlink=true\n" \
|
||||
"option-online=false\n" \
|
||||
|
@ -447,8 +447,8 @@ testRun(void)
|
||||
ioFilterGroupAdd(filterGroup, pageChecksumNew(0, PG_SEGMENT_PAGE_DEFAULT, 0));
|
||||
ioFilterGroupAdd(filterGroup, cipherBlockNew(cipherModeEncrypt, cipherTypeAes256Cbc, BUFSTRZ("x"), NULL));
|
||||
ioFilterGroupAdd(filterGroup, cipherBlockNew(cipherModeDecrypt, cipherTypeAes256Cbc, BUFSTRZ("x"), NULL));
|
||||
ioFilterGroupAdd(filterGroup, gzCompressNew(3));
|
||||
ioFilterGroupAdd(filterGroup, gzDecompressNew());
|
||||
ioFilterGroupAdd(filterGroup, compressFilter(compressTypeGz, 3));
|
||||
ioFilterGroupAdd(filterGroup, decompressFilter(compressTypeGz));
|
||||
varLstAdd(paramList, ioFilterGroupParamAll(filterGroup));
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
|
Loading…
Reference in New Issue
Block a user