basebackup_to_shell

添加一种备份到Shell终端到基础备份方式

概览

扩展包名版本分类许可证语言
basebackup_to_shell-ADMINPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
5950basebackup_to_shell-
相关扩展basic_archive pg_walinspect pg_repack pg_rewrite pg_squeeze pg_dirtyread pgfincore pg_cooldown

版本

PG18PG17PG16PG15PG14
----

安装

提示:这是 PostgreSQL 内核自带的 contrib 扩展

用法

basebackup_to_shell: 添加名为 shell 的自定义基础备份目标

basebackup_to_shell 模块为 pg_basebackup 添加一个自定义的 shell 备份目标,允许管理员通过任意 Shell 命令传输备份归档。

配置

添加到 postgresql.conf

shared_preload_libraries = 'basebackup_to_shell'

# 每个归档执行的命令;在 stdin 上接收归档数据
basebackup_to_shell.command = 'gzip > /backup/%f.gz'

# 可选:限制仅特定角色可使用
basebackup_to_shell.required_role = 'backup_admin'

参数

参数类型描述
basebackup_to_shell.command字符串要执行的 Shell 命令;通过 stdin 接收归档
basebackup_to_shell.required_role字符串使用 shell 目标所需的角色(空 = 任何复制用户)

命令占位符

占位符替换为
%f归档文件名(例如 base.tar
%d用户提供的目标详情字符串
%%字面量 %

示例

# 将备份压缩到本地目录
# postgresql.conf: basebackup_to_shell.command = 'gzip > /backup/%f.gz'
pg_basebackup --target=shell

# 使用详情参数上传到 S3
# postgresql.conf: basebackup_to_shell.command = 'aws s3 cp - s3://bucket/%d/%f'
pg_basebackup --target=shell:myprefix

# 自定义处理管道
# postgresql.conf: basebackup_to_shell.command = 'zstd | ssh backup-host "cat > /backup/%f.zst"'
pg_basebackup --target=shell

%d 占位符需要通过 --target=shell:DETAIL 提供目标详情。如果命令中没有 %d,则禁止提供详情。详情字符串只能包含字母数字字符。


最后修改 2026-03-12: update extension pages (f579993)