1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2025-01-18 04:58:51 +02:00

Move file init code to file module

This commit is contained in:
David Steele 2014-02-03 14:50:23 -05:00
parent aef4adf1f3
commit fa668d5007
3 changed files with 79 additions and 62 deletions

View File

@ -4,7 +4,6 @@ compress=/usr/bin/gzip --stdout %file%
decompress=/usr/bin/gzip -dc %file%
#checksum=sha1sum %file% | awk '{print \$1}' # Ubuntu Linux
checksum=/usr/bin/shasum %file% | awk '{print $1}'
copy=/bin/cp %source% %destination%
manifest=/opt/local/bin/gfind %path% -printf '%P\t%y\t%u\t%g\t%m\t%T@\t%i\t%s\t%l\n'
psql=/Library/PostgreSQL/9.3/bin/psql --port=6001

View File

@ -648,26 +648,7 @@ if (!defined($strConfigFile))
}
my %oConfig;
tie %oConfig, 'Config::IniFiles', (-file => $strConfigFile) or die "Unable to find config file";
# Load commands required for archive-push
$pg_backrest_file::strCommandChecksum = config_load(\%oConfig, "command", "checksum", !$pg_backrest_file::bNoChecksum);
$pg_backrest_file::strCommandCompress = config_load(\%oConfig, "command", "compress", !$pg_backrest_file::bNoCompression);
$pg_backrest_file::strCommandDecompress = config_load(\%oConfig, "command", "decompress", !$pg_backrest_file::bNoCompression);
$pg_backrest_file::strCommandCopy = config_load(\%oConfig, "command", "copy", $pg_backrest_file::bNoCompression);
# Load and check the base backup path
$pg_backrest_file::strBackupPath = $oConfig{backup}{path};
if (!defined($pg_backrest_file::strBackupPath))
{
die &log(ERROR, "common:backup_path undefined");
}
unless (-e $pg_backrest_file::strBackupPath)
{
die &log(ERROR, "base path ${pg_backrest_file::strBackupPath} does not exist");
}
tie %oConfig, 'Config::IniFiles', (-file => $strConfigFile) or confess &log(ERROR, "unable to find config file ${strConfigFile}");
# Load and check the cluster
if (!defined($strCluster))
@ -675,34 +656,22 @@ if (!defined($strCluster))
$strCluster = "db"; #!!! Modify to load cluster from conf if there is only one, else error
}
$pg_backrest_file::strBackupClusterPath = "${pg_backrest_file::strBackupPath}/${strCluster}";
unless (-e $pg_backrest_file::strBackupClusterPath)
{
&log(INFO, "creating cluster path ${pg_backrest_file::strBackupClusterPath}");
mkdir $pg_backrest_file::strBackupClusterPath or die &log(ERROR, "cluster backup path '${pg_backrest_file::strBackupClusterPath}' create failed");
}
# Load the backup host (if it exists)
$pg_backrest_file::strBackupHost = $oConfig{backup}{host};
if (defined($pg_backrest_file::strBackupHost))
{
&log(INFO, "connecting to backup ssh host ${pg_backrest_file::strBackupHost}");
# !!! This could be improved by redirecting stderr to a file to get a better error message
$pg_backrest_file::oBackupSSH = Net::OpenSSH->new($pg_backrest_file::strBackupHost, master_stderr_discard => true);
$pg_backrest_file::oBackupSSH->error and confess &log(ERROR, "unable to connect to ${pg_backrest_file::strBackupHost}: " . $pg_backrest_file::oBackupSSH->error);
}
# Run file_init_archive - this is the minimal config needed to run archiving
file_init_archive
(
config_load(\%oConfig, "command", "checksum", !$bNoChecksum),
config_load(\%oConfig, "command", "compress", !$pg_backrest_file::bNoCompression),
config_load(\%oConfig, "command", "decompress", !$pg_backrest_file::bNoCompression),
$oConfig{backup}{host},
$oConfig{backup}{path},
$strCluster,
);
####################################################################################################################################
# ARCHIVE-PUSH Command
####################################################################################################################################
if ($strOperation eq "archive-push")
{
# Make sure that the db is local
# archive-push command must have two arguments
if (@ARGV != 2)
{
@ -747,21 +716,13 @@ if ($strType ne "full" && $strType ne "differential" && $strType ne "incremental
die &log(ERROR, "backup type must be full, differential (diff), incremental (incr)");
}
# Load commands required for backup
$pg_backrest_file::strCommandManifest = config_load(\%oConfig, "command", "manifest");
$pg_backrest_file::strCommandPsql = config_load(\%oConfig, "command", "psql");
# Load the database host (if it exists)
$pg_backrest_file::strDbHost = $oConfig{"cluster:$strCluster"}{host};
if (defined($pg_backrest_file::strDbHost))
{
&log(INFO, "connecting to database ssh host ${pg_backrest_file::strDbHost}");
# !!! This could be improved by redirecting stderr to a file to get a better error message
$pg_backrest_file::oDbSSH = Net::OpenSSH->new($pg_backrest_file::strDbHost, master_stderr_discard => true);
$pg_backrest_file::oDbSSH->error and confess &log(ERROR, "unable to connect to ${pg_backrest_file::strDbHost}: " . $pg_backrest_file::oDbSSH->error);
}
# Run file_init_archive - this is the minimal config needed to run archiving
file_init_backup
(
config_load(\%oConfig, "command", "manifest"),
$pg_backrest_file::strCommandPsql = config_load(\%oConfig, "command", "psql"),
$oConfig{"cluster:$strCluster"}{host}
);
####################################################################################################################################
# BACKUP

View File

@ -16,7 +16,8 @@ use pg_backrest_utility;
use Exporter qw(import);
our @EXPORT = qw(path_get path_type_get link_create path_create file_copy file_list_get manifest_get file_hash_get
our @EXPORT = qw(file_init_archive file_init_backup
path_get path_type_get link_create path_create file_copy file_list_get manifest_get file_hash_get
PATH_DB PATH_DB_ABSOLUTE PATH_BACKUP PATH_BACKUP_CLUSTER PATH_BACKUP_TMP PATH_BACKUP_ARCHIVE);
# Extension and permissions
@ -27,7 +28,6 @@ our $strDefaultPathPermission = "0750";
our $strCommandChecksum;
our $strCommandCompress;
our $strCommandDecompress;
our $strCommandCopy;
our $strCommandCat = "cat %file%";
our $strCommandManifest;
our $strCommandPsql;
@ -46,11 +46,68 @@ our $strBackupClusterPath; # Backup cluster path
our $bNoCompression;
####################################################################################################################################
# INIT
# FILE_INIT_ARCHIVE
####################################################################################################################################
sub init
sub file_init_archive
{
my $strCommandChecksumParam = shift;
my $strCommandCompressParam = shift;
my $strCommandDecompressParam = shift;
my $strBackupHostParam = shift;
my $strBackupPathParam = shift;
my $strCluster = shift;
# Assign parameters to module variables
$strCommandChecksum = $strCommandChecksumParam;
$strCommandCompress = $strCommandCompressParam;
$strCommandDecompress = $strCommandDecompressParam;
$strBackupPath = $strBackupPathParam;
#$strCluster = $strClusterParam;
$strBackupHost = $strBackupHostParam;
# Make sure the backup path is defined
if (!defined($pg_backrest_file::strBackupPath))
{
die &log(ERROR, "common:backup_path undefined");
}
# Create the backup cluster path
$strBackupClusterPath = "${strBackupPath}/${strCluster}";
# unless (-e $pg_backrest_file::strBackupClusterPath)
# {
# &log(INFO, "creating cluster path ${pg_backrest_file::strBackupClusterPath}");
# mkdir $pg_backrest_file::strBackupClusterPath or die &log(ERROR, "cluster backup path '${pg_backrest_file::strBackupClusterPath}' create failed");
# }
if (defined($pg_backrest_file::strBackupHost))
{
&log(INFO, "connecting to backup ssh host ${pg_backrest_file::strBackupHost}");
# !!! This could be improved by redirecting stderr to a file to get a better error message
$pg_backrest_file::oBackupSSH = Net::OpenSSH->new($pg_backrest_file::strBackupHost, master_stderr_discard => true);
$pg_backrest_file::oBackupSSH->error and confess &log(ERROR, "unable to connect to ${pg_backrest_file::strBackupHost}: " . $pg_backrest_file::oBackupSSH->error);
}
}
sub file_init_backup
{
my $strCommandManifestParam = shift;
my $strCommandPsqlParam = shift;
my $strDbHostParam = shift;
$strCommandManifest = $strCommandManifestParam;
$strCommandPsql = $strCommandPsqlParam;
$strDbHost = $strDbHostParam;
if (defined($strDbHost))
{
&log(INFO, "connecting to database ssh host ${strDbHost}");
# !!! This could be improved by redirecting stderr to a file to get a better error message
$pg_backrest_file::oDbSSH = Net::OpenSSH->new($pg_backrest_file::strDbHost, master_stderr_discard => true);
$pg_backrest_file::oDbSSH->error and confess &log(ERROR, "unable to connect to ${pg_backrest_file::strDbHost}: " . $pg_backrest_file::oDbSSH->error);
}
}
####################################################################################################################################