文章

记录HALO博客迁移

HALO
由于原先购买的轻量服务器到期,续费价格过高,所以决定迁移博客到tx云上

迁移步骤

一开始使用的是官方自带的备份恢复功能,发现有bug,生成的备份文件不全且恢复之后大量报错

于是只能手动迁移,踩了很多坑

最后的步骤如下:

  1. 在原服务器上备份数据库,备份整个博客文件夹
  2. 将数据库导入新服务器,将博客文件夹上传到新服务器
  3. 修改博客配置文件,修改数据库配置
  4. 启动docker
  5. 需要注意的是,两边的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 数据库:

  1. 进入正在运行 PostgreSQL 容器的终端。首先,使用以下命令列出正在运行的容器并找到 PostgreSQL 容器的ID或名称:

    docker ps
    
  2. 使用以下命令进入 PostgreSQL 容器的终端,其中 container_name_or_id 是容器的名称或ID:

    docker exec -it container_name_or_id bash
    
  3. 在容器内,使用 pg_dump 命令导出数据库。假设你要导出的数据库名为 mydb,导出的文件名为 mydb_dump.sql

    pg_dump -U username -d mydb -f /tmp/mydb_dump.sql
    

    这将在容器内的 /tmp 目录中创建一个 SQL 导出文件。

  4. 退出容器的终端:

    exit
    
  5. 将导出的 SQL 文件从容器复制到宿主机。在宿主机上执行以下命令:

    docker cp container_name_or_id:/tmp/mydb_dump.sql /path/to/host/machine
    

    这将将 SQL 文件从容器复制到宿主机上的指定路径。

导入 PostgreSQL 数据库:

  1. 在宿主机上,将导出的 SQL 文件复制到正在运行 PostgreSQL 容器的文件系统中。假设容器的名称或ID是 container_name_or_id

    docker cp /path/to/host/machine/mydb_dump.sql container_name_or_id:/tmp
    
  2. 进入正在运行 PostgreSQL 容器的终端:

    docker exec -it container_name_or_id bash
    
  3. 在容器内,使用 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)
);
License:  CC BY 4.0