@@ -1296,7 +1296,8 @@ def get_recovery_conf(self, node):
1296
1296
def set_archiving (
1297
1297
self ,backup_dir ,instance ,node ,replica = False ,
1298
1298
overwrite = False ,compress = True ,old_binary = False ,
1299
- log_level = False ,archive_timeout = False ):
1299
+ log_level = False ,archive_timeout = False ,
1300
+ custom_archive_command = None ):
1300
1301
1301
1302
# parse postgresql.auto.conf
1302
1303
options = {}
@@ -1306,45 +1307,47 @@ def set_archiving(
1306
1307
else :
1307
1308
options ['archive_mode' ]= 'on'
1308
1309
1309
- if os .name == 'posix' :
1310
- options ['archive_command' ]= '"{0}" archive-push -B {1} --instance={2} ' .format (
1311
- self .probackup_path ,backup_dir ,instance )
1312
-
1313
- elif os .name == 'nt' :
1314
- options ['archive_command' ]= '"{0}" archive-push -B {1} --instance={2} ' .format (
1315
- self .probackup_path .replace ("\\ " ,"\\ \\ " ),
1316
- backup_dir .replace ("\\ " ,"\\ \\ " ),instance )
1310
+ if custom_archive_command is None :
1311
+ if os .name == 'posix' :
1312
+ options ['archive_command' ]= '"{0}" archive-push -B {1} --instance={2} ' .format (
1313
+ self .probackup_path ,backup_dir ,instance )
1317
1314
1318
- # don`t forget to kill old_binary after remote ssh release
1319
- if self . remote and not old_binary :
1320
- options [ 'archive_command' ] += '--remote-proto=ssh '
1321
- options [ 'archive_command' ] += '--remote-host=localhost '
1315
+ elif os . name == 'nt' :
1316
+ options [ 'archive_command' ] = '"{0}" archive-push -B {1} --instance={2} ' . format (
1317
+ self . probackup_path . replace ( " \\ " , " \\ \\ " ),
1318
+ backup_dir . replace ( " \\ " , " \\ \\ " ), instance )
1322
1319
1323
- if self .archive_compress and compress :
1324
- options ['archive_command' ]+= '--compress '
1320
+ # don`t forget to kill old_binary after remote ssh release
1321
+ if self .remote and not old_binary :
1322
+ options ['archive_command' ]+= '--remote-proto=ssh '
1323
+ options ['archive_command' ]+= '--remote-host=localhost '
1325
1324
1326
- if overwrite :
1327
- options ['archive_command' ]+= '--overwrite '
1325
+ if self . archive_compress and compress :
1326
+ options ['archive_command' ]+= '--compress '
1328
1327
1329
- options ['archive_command' ]+= '--log-level-console=VERBOSE '
1330
- options ['archive_command' ]+= '-j 5 '
1331
- options ['archive_command' ]+= '--batch-size 10 '
1332
- options ['archive_command' ]+= '--no-sync '
1328
+ if overwrite :
1329
+ options ['archive_command' ]+= '--overwrite '
1333
1330
1334
- if archive_timeout :
1335
- options ['archive_command' ]+= '--archive-timeout={0} ' .format (
1336
- archive_timeout )
1331
+ options ['archive_command' ]+= '--log-level-console=VERBOSE '
1332
+ options ['archive_command' ]+= '-j 5 '
1333
+ options ['archive_command' ]+= '--batch-size 10 '
1334
+ options ['archive_command' ]+= '--no-sync '
1337
1335
1338
- if os .name == 'posix' :
1339
- options ['archive_command' ]+= '--wal-file-path=%p --wal-file-name=%f'
1336
+ if archive_timeout :
1337
+ options ['archive_command' ]+= '--archive-timeout={0} ' .format (
1338
+ archive_timeout )
1340
1339
1341
- elif os .name == 'nt ' :
1342
- options ['archive_command' ]+= '--wal-file-path="%p" --wal-file-name="%f" '
1340
+ if os .name == 'posix ' :
1341
+ options ['archive_command' ]+= '--wal-file-path=%p --wal-file-name=%f '
1343
1342
1344
- if log_level :
1345
- options ['archive_command' ]+= ' --log-level-console={0}' .format (log_level )
1346
- options ['archive_command' ]+= ' --log-level-file={0} ' .format (log_level )
1343
+ elif os .name == 'nt' :
1344
+ options ['archive_command' ]+= '--wal-file-path="%p" --wal-file-name="%f"'
1347
1345
1346
+ if log_level :
1347
+ options ['archive_command' ]+= ' --log-level-console={0}' .format (log_level )
1348
+ options ['archive_command' ]+= ' --log-level-file={0} ' .format (log_level )
1349
+ else :# custom_archive_command is not None
1350
+ options ['archive_command' ]= custom_archive_command
1348
1351
1349
1352
self .set_auto_conf (node ,options )
1350
1353