Windows下pg_dump备份PostgreSQL,Linux端pg_restore提示无效归档文件求助
解决Windows到Linux PostgreSQL迁移的pg_restore归档无效问题
问题根源在于Windows命令提示符的>重定向是文本模式,会自动转换换行符,破坏了pg_dump --format=c生成的二进制压缩归档文件,导致Linux端的pg_restore无法识别。Linux之间迁移正常是因为Linux的重定向默认采用二进制模式。
修复步骤:
- 重新生成备份文件:放弃
>重定向,改用pg_dump自带的-f参数指定输出文件,强制以二进制模式写入:pg_dump --format=c -U user localdbs -f file.pg.dump - 上传文件时启用二进制传输:用WinSCP、FileZilla等工具上传备份文件时,将传输模式设置为二进制,避免传输过程中修改文件内容。
- 可选验证操作:在Windows本地先执行
pg_restore --list file.pg.dump,如果能正常列出数据库表、函数等对象,说明备份文件有效,再上传至Linux执行恢复命令。
内容的提问来源于stack exchange,提问作者David Murphy
相关产品推荐
相关产品推荐

