记录HALO博客迁移
HALO
由于原先购买的轻量服务器到期,续费价格过高,所以决定迁移博客到tx云上
迁移步骤
一开始使用的是官方自带的备份恢复功能,发现有bug,生成的备份文件不全且恢复之后大量报错
于是只能手动迁移,踩了很多坑
最后的步骤如下:
- 在原服务器上备份数据库,备份整个博客文件夹
- 将数据库导入新服务器,将博客文件夹上传到新服务器
- 修改博客配置文件,修改数据库配置
- 启动docker
- 需要注意的是,两边的postgresql的docker镜像版本要一致,否则会出现版本不兼容的问题
docker run -p 5431:5432 --name postgres -e POSTGRES_PASSWORD=pwd -v /usr/local/docker/pgdata:/var/lib/postgresql/data -d postgres
docker exec -it postgres /bin/bash
su postgres
psql -U postgres
CREATE USER un WITH PASSWORD 'pwd';
ALTER USER un WITH SUPERUSER;
CREATE DATABASE halo OWNER un;
\q exit
rz
docker cp /root/postgresql.conf postgres:/var/lib/postgresql/data/postgresql.conf
docker restart postgres
sudo curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
压缩成.tar.gz文件(gzip压缩):
tar -czvf 文件夹名称.tar.gz 文件夹路径
解压.tar.gz文件(gzip压缩):
tar -xzvf 文件夹名称.tar.gz
共享文件夹
-
打开终端。
-
切换到包含你要共享的文件的目录。使用
cd
命令切换到目标目录,例如:cd /path/to/your/files
-
启动Python内置HTTP服务器。在终端中运行以下命令,其中
port
是你想要使用的端口号(通常使用80或8080):python -m SimpleHTTPServer port
或者对于Python 3:
python3 -m http.server port
-
服务器会在指定的端口上启动。你可以在浏览器中输入服务器的IP地址和端口号,以访问共享的文件。例如,如果你的服务器IP是
192.168.1.100
,端口号是8080
,你可以在浏览器中输入:http://192.168.1.100:8080/
-
这将列出共享目录中的文件,你可以点击文件名以下载它们。
要在Docker中导出和导入PostgreSQL数据库,你可以使用以下步骤:
导出 PostgreSQL 数据库:
-
进入正在运行 PostgreSQL 容器的终端。首先,使用以下命令列出正在运行的容器并找到 PostgreSQL 容器的ID或名称:
docker ps
-
使用以下命令进入 PostgreSQL 容器的终端,其中
container_name_or_id
是容器的名称或ID:docker exec -it container_name_or_id bash
-
在容器内,使用
pg_dump
命令导出数据库。假设你要导出的数据库名为mydb
,导出的文件名为mydb_dump.sql
:pg_dump -U username -d mydb -f /tmp/mydb_dump.sql
这将在容器内的
/tmp
目录中创建一个 SQL 导出文件。 -
退出容器的终端:
exit
-
将导出的 SQL 文件从容器复制到宿主机。在宿主机上执行以下命令:
docker cp container_name_or_id:/tmp/mydb_dump.sql /path/to/host/machine
这将将 SQL 文件从容器复制到宿主机上的指定路径。
导入 PostgreSQL 数据库:
-
在宿主机上,将导出的 SQL 文件复制到正在运行 PostgreSQL 容器的文件系统中。假设容器的名称或ID是
container_name_or_id
:docker cp /path/to/host/machine/mydb_dump.sql container_name_or_id:/tmp
-
进入正在运行 PostgreSQL 容器的终端:
docker exec -it container_name_or_id bash
-
在容器内,使用
psql
命令导入数据库。假设你要导入的数据库名为mydb
:psql -U username -d mydb -a -f /tmp/mydb_dump.sql
这将从 SQL 文件中还原数据库。
使用 ALTER TABLE 命令来更改表的所有者。以下是命令的基本语法:
ALTER TABLE 表名 OWNER TO 新所有者;
CREATE TABLE public.extensions (
name character varying(255) NOT NULL,
data bytea,
version bigint,
CONSTRAINT extensions_pkey PRIMARY KEY(name)
);