1
0
mirror of https://github.com/postgrespro/pg_probackup.git synced 2025-02-03 14:01:57 +02:00

Rename ssh options

This commit is contained in:
Konstantin Knizhnik 2018-11-20 16:10:18 +03:00
parent 75b181c039
commit ddf2b9b4b3
4 changed files with 30 additions and 18 deletions

View File

@ -74,8 +74,10 @@ const char *master_host = NULL;
const char *master_port= NULL;
const char *master_user = NULL;
uint32 replica_timeout = REPLICA_TIMEOUT_DEFAULT;
char *ssh_host;
char *ssh_port;
char *remote_host;
char *remote_port;
char *remote_proto = (char*)"ssh";
char *ssh_config;
bool is_remote_agent;
bool is_remote_backup;
@ -172,10 +174,12 @@ static pgut_option options[] =
{ 's', 16, "master-port", &master_port, SOURCE_CMDLINE, },
{ 's', 17, "master-user", &master_user, SOURCE_CMDLINE, },
{ 'u', 18, "replica-timeout", &replica_timeout, SOURCE_CMDLINE, SOURCE_DEFAULT, OPTION_UNIT_S },
{ 's', 19, "ssh-host", &ssh_host, SOURCE_CMDLINE, },
{ 's', 20, "ssh-port", &ssh_port, SOURCE_CMDLINE, },
{ 'b', 21, "agent", &is_remote_agent, SOURCE_CMDLINE, },
{ 'b', 22, "remote", &is_remote_backup, SOURCE_CMDLINE, },
{ 's', 19, "remote-host", &remote_host, SOURCE_CMDLINE, },
{ 's', 20, "remote-port", &remote_port, SOURCE_CMDLINE, },
{ 's', 21, "remote-proto", &remote_proto, SOURCE_CMDLINE, },
{ 's', 22, "ssh-config", &ssh_config, SOURCE_CMDLINE, },
{ 'b', 23, "agent", &is_remote_agent, SOURCE_CMDLINE, },
{ 'b', 24, "remote", &is_remote_backup, SOURCE_CMDLINE, },
/* restore options */
{ 's', 30, "time", &target_time, SOURCE_CMDLINE },
{ 's', 31, "xid", &target_xid, SOURCE_CMDLINE },
@ -382,8 +386,8 @@ main(int argc, char *argv[])
if (!is_absolute_path(backup_path))
elog(ERROR, "-B, --backup-path must be an absolute path");
if (ssh_host != NULL &&
(backup_subcmd == BACKUP_CMD || backup_subcmd == ADD_INSTANCE_CMD || backup_subcmd == RESTORE_CMD))
if (IsSshConnection()
&& (backup_subcmd == BACKUP_CMD || backup_subcmd == ADD_INSTANCE_CMD || backup_subcmd == RESTORE_CMD))
{
if (is_remote_agent) {
if (backup_subcmd != BACKUP_CMD) {
@ -546,7 +550,7 @@ main(int argc, char *argv[])
return do_init();
case BACKUP_CMD:
current.stream = stream_wal;
if (ssh_host && !is_remote_agent)
if (IsSshConnection() && !is_remote_agent)
{
current.status = BACKUP_STATUS_DONE;
StrNCpy(current.program_version, PROGRAM_VERSION,
@ -564,7 +568,7 @@ main(int argc, char *argv[])
elog(INFO, "Backup start, pg_probackup version: %s, backup ID: %s, backup mode: %s, instance: %s, stream: %s, remote: %s",
PROGRAM_VERSION, base36enc(start_time), backup_mode, instance_name,
stream_wal ? "true" : "false", ssh_host ? "true" : "false");
stream_wal ? "true" : "false", remote_host ? "true" : "false");
return do_backup(start_time);
}

View File

@ -332,6 +332,8 @@ typedef struct
XLByteInSeg(xlrp, logSegNo)
#endif
#define IsSshConnection() (remote_host != NULL && strcmp(remote_proto, "ssh") == 0)
/* directory options */
extern char *backup_path;
extern char backup_instance_path[MAXPGPATH];
@ -351,8 +353,10 @@ extern char *replication_slot;
extern bool smooth_checkpoint;
#define ARCHIVE_TIMEOUT_DEFAULT 300
extern uint32 archive_timeout;
extern char *ssh_port;
extern char *ssh_host;
extern char *remote_port;
extern char *remote_host;
extern char *remote_proto;
extern char *ssh_config;
extern const char *master_db;
extern const char *master_host;
extern const char *master_port;

View File

@ -38,7 +38,7 @@ static bool fio_is_remote(fio_location location)
{
return location == FIO_REMOTE_HOST
|| (location == FIO_BACKUP_HOST && is_remote_agent)
|| (location == FIO_DB_HOST && !is_remote_agent && ssh_host != NULL);
|| (location == FIO_DB_HOST && !is_remote_agent && IsSshConnection());
}
static ssize_t fio_read_all(int fd, void* buf, size_t size)

View File

@ -25,7 +25,7 @@ int remote_execute(int argc, char* argv[], bool listen)
{
char cmd[MAX_CMDLINE_LENGTH];
size_t dst = 0;
char* ssh_argv[6];
char* ssh_argv[8];
int ssh_argc;
int i;
int outfd[2];
@ -33,12 +33,16 @@ int remote_execute(int argc, char* argv[], bool listen)
pid_t pid;
ssh_argc = 0;
ssh_argv[ssh_argc++] = (char*)"ssh";
if (ssh_port != 0) {
ssh_argv[ssh_argc++] = remote_proto;
if (remote_port != 0) {
ssh_argv[ssh_argc++] = (char*)"-p";
ssh_argv[ssh_argc++] = ssh_port;
ssh_argv[ssh_argc++] = remote_port;
}
ssh_argv[ssh_argc++] = ssh_host;
if (ssh_config != 0) {
ssh_argv[ssh_argc++] = (char*)"-F";
ssh_argv[ssh_argc++] = ssh_config;
}
ssh_argv[ssh_argc++] = remote_host;
ssh_argv[ssh_argc++] = cmd+1;
ssh_argv[ssh_argc] = NULL;