GPG解密Postgres备份.gpg文件后提取.dump文件报错问题求助
Postgres GPG备份解密后无法提取dump文件解决
问题根因
gunzip默认仅识别带.gz/.gzip标准gzip后缀的文件,解密生成的db_backup虽实际为gzip格式,但无对应后缀,因此触发unknown suffix报错;手动输入带后缀的文件名时,因实际文件未重命名,就会触发文件不存在报错。
解决方法
重命名后解压
先给文件补上标准gzip后缀再执行解压:mv /home/jimmythecode/Downloads/db_backup /home/jimmythecode/Downloads/db_backup.gz gunzip /home/jimmythecode/Downloads/db_backup.gz解压完成后同目录生成的
db_backup文件就是原始的pg备份文件,直接重命名为pg_backup.dump即可用于恢复。不改后缀直接解压
不想修改原文件名的话,可通过参数让gzip直接读取无后缀的压缩文件,输出为指定的dump文件:gzip -dc /home/jimmythecode/Downloads/db_backup > /home/jimmythecode/Downloads/pg_backup.dump其中
-d表示执行解压操作,-c表示将解压内容输出到标准流,通过重定向直接写入目标文件,全程不需要修改原压缩文件名。解密解压一步完成(推荐后续操作使用)
后续处理同类加密备份时,可直接通过管道将gpg解密输出流转给gzip解压,一步生成最终dump文件,不需要生成中间压缩文件:gpg --decrypt /home/jimmythecode/Downloads/heroku-backup-2022-05-05_07.00.gpg | gzip -dc > /home/jimmythecode/Downloads/pg_backup.dump
验证方法
解压完成后执行以下命令校验文件有效性:
file pg_backup.dump
返回结果包含PostgreSQL custom archive相关提示时,说明备份文件正常,可直接使用pg_restore执行恢复操作。
内容的提问来源于stack exchange,提问作者JimmyTheCode
相关产品推荐
相关产品推荐

