进入数据库
sudo su - postgres
进入数据库bin目录
cd /usr/lib/postgresql/12/bin
恢复tar归档备份文件
./pg_restore -U postgres -W -d postgres -C "/usr/local/www/backup.tar"
出现
pg_restore: error: could not find header for file "toc.dat" in tar archive错误
解决方案 1:
在某处解压。
如果你看看.tar存档,你会发现一个重新存储.sql在顶部:
-- File paths need to be edited. Search for $$PATH$$ and
-- replace it with the path to the directory containing
-- the extracted data files.
因此,要创建数据库示例,您可以在某处提取.tar内容,并使用一个命令:
sed -e 's/\$\$PATH\$\$/\/path\/to\/extracted\/files/g' restore.sql | psql (立即运行
) 或
sed -e 's/\$\$PATH\$\$/\/path\/to\/extracted\/files/g' restore.sql > r.sql (然后可以通过 PgAdmin 或 psql 执行)
解决方案 2:
解压缩到某处
1.在脚本.sql中找到字符串"
CREATE TABLE _reference20 ... " - 在 psql 中运行它。
2. 在脚本中查找字符串"
COPY _reference20 (...) FROM '$$PATH$$/XXX.dat'; " - 修复(
$$PATH$$[/b]/XXX.dat ),然后在psql中执行。
3.创建
CREATE DATABASE db_name ENCODING = 'UTF8' ;
或通过
createdb pg_restore -U <username> -d db_name <your/path/to/extracted/dir>/ 是下载和存档文件的路径。