From 9b5a27f6578b7041d72f8527e71c35aa60c0e8ab Mon Sep 17 00:00:00 2001 From: David Steele Date: Sat, 14 May 2016 10:39:56 -0400 Subject: [PATCH] Add Manifest->addFile(). Some files need to be added to the manifest after the initial build. This is currently done in only one place but usage will expand in the future so the functionality has been encapsulated in addFile(). --- lib/pgBackRest/Backup.pm | 12 ++---------- lib/pgBackRest/Manifest.pm | 40 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/lib/pgBackRest/Backup.pm b/lib/pgBackRest/Backup.pm index f5213d18e..50a53b481 100644 --- a/lib/pgBackRest/Backup.pm +++ b/lib/pgBackRest/Backup.pm @@ -862,16 +862,8 @@ sub process "file does not match actual checksum of '${strCopyChecksum}'", ERROR_CHECKSUM); } - # Set manifest values - $oBackupManifest->set(MANIFEST_SECTION_TARGET_FILE, $strFileLog, MANIFEST_SUBKEY_USER, - $oBackupManifest->get(MANIFEST_SECTION_TARGET_PATH, $strPathLog, MANIFEST_SUBKEY_USER)); - $oBackupManifest->set(MANIFEST_SECTION_TARGET_FILE, $strFileLog, MANIFEST_SUBKEY_GROUP, - $oBackupManifest->get(MANIFEST_SECTION_TARGET_PATH, $strPathLog, MANIFEST_SUBKEY_GROUP)); - $oBackupManifest->set(MANIFEST_SECTION_TARGET_FILE, $strFileLog, MANIFEST_SUBKEY_MODE, '0700'); - $oBackupManifest->set(MANIFEST_SECTION_TARGET_FILE, $strFileLog, MANIFEST_SUBKEY_TIMESTAMP, $lModificationTime); - $oBackupManifest->set(MANIFEST_SECTION_TARGET_FILE, $strFileLog, MANIFEST_SUBKEY_SIZE, $lCopySize); - $oBackupManifest->set(MANIFEST_SECTION_TARGET_FILE, $strFileLog, MANIFEST_SUBKEY_CHECKSUM, $strCopyChecksum); - $oBackupManifest->buildDefault(); + # Add file to manifest + $oBackupManifest->fileAdd($strFileLog, $lModificationTime, $lCopySize, $strCopyChecksum); } } } diff --git a/lib/pgBackRest/Manifest.pm b/lib/pgBackRest/Manifest.pm index 20673f141..59ef7c381 100644 --- a/lib/pgBackRest/Manifest.pm +++ b/lib/pgBackRest/Manifest.pm @@ -838,6 +838,46 @@ sub linkCheck } } +#################################################################################################################################### +# fileAdd +# +# Add files to the manifest that were generated after the initial manifest build, e.g. backup_label, tablespace_map, and copied WAL +# files. Since the files were not in the original cluster the user, group, and mode must be defaulted. +#################################################################################################################################### +sub fileAdd +{ + my $self = shift; + + # Assign function parameters, defaults, and log debug info + my + ( + $strOperation, + $strManifestFile, + $lModificationTime, + $lSize, + $strChecksum + ) = + logDebugParam + ( + __PACKAGE__ . '->fileAdd', \@_, + {name => 'strManifestFile'}, + {name => 'lModificationTime'}, + {name => 'lSize'}, + {name => 'lChecksum'} + ); + + # Set manifest values + $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_USER, + $self->get(MANIFEST_SECTION_TARGET_PATH, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_USER)); + $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_GROUP, + $self->get(MANIFEST_SECTION_TARGET_PATH, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_GROUP)); + $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_MODE, '0600'); + $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_TIMESTAMP, $lModificationTime); + $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_SIZE, $lSize); + $self->set(MANIFEST_SECTION_TARGET_FILE, $strManifestFile, MANIFEST_SUBKEY_CHECKSUM, $strChecksum); + $self->buildDefault(); +} + #################################################################################################################################### # buildDefault #