我可以直接将整个 /var/discourse 打包成 tar 文件并在新服务器上运行吗?

因为当我尝试使用内置备份进行迁移时,压缩过程很快就会填满我的磁盘。我还有大约 60GB 的可用空间,但在备份期间磁盘会变满并失败。

但是,如果我只是手动压缩整个 /var/discourse 文件夹,存档大约只有 30GB(文件夹本身大约 34GB)。

因为容量在填满时会直接释放,所以我截取了 80% 的屏幕截图。

所以我的问题是:

• 我可以直接 tar/打包整个 /var/discourse 文件夹,将其移动到新服务器,解压,然后运行 Discourse 吗?

• 或者我必须遵循推荐的方法(数据库备份 + 单独复制上传文件)?

• 有没有什么方法可以避免在备份压缩过程中磁盘被填满?

嘿,

看看这个:

是的,有更多的可用空间 :slight_smile:

除了这个显而易见的答案,还有一些功能请求可以防止备份在创建时占用更多空间,但它们尚未实现:Reduce local disk space needs by not (redundantly) gzipping backupsAdd option to disable backup compression

4 个赞

此外,如果您尚未运行

./launcher cleanup

那么您可能有很多 docker 镜像占用了空间。

5 个赞

我认为 docker system prune 可能会有帮助

我尝试将其释放到 44GB,我的服务器总共 98GB,然后我再次启动 s3,它仍然不起作用,没有足够的空间,不知道 discourse 说备份为什么这么大

[2025-08-20 10:11:31] 正在完成备份…

[2025-08-20 10:11:31] 正在创建存档:discourse-2025-08-20-101058-v20250812033430.tar.gz

[2025-08-20 10:11:31] 正在确保存档尚不存在…

[2025-08-20 10:11:31] 正在创建空存档…

[2025-08-20 10:11:31] 正在存档数据转储…

[2025-08-20 10:11:31] 正在存档上传…

[2025-08-20 10:16:35] 正在删除临时目录 /var/www/discourse/tmp/backups/default/2025-08-20-101058

[2025-08-20 10:16:36] 正在对存档进行 gzip 压缩,这可能需要一些时间…

[2025-08-20 10:28:05] EXCEPTION: gzip -1 /var/www/discourse/public/backups/default/discourse-2025-08-20-101058-v20250812033430.tar

无法 gzip 存档。

gzip: /var/www/discourse/public/backups/default/discourse-2025-08-20-101058-v20250812033430.tar.gz: 设备上没有剩余空间

[2025-08-20 10:28:05] /var/www/discourse/lib/discourse.rb:171:in `execute_command’

/var/www/discourse/lib/discourse.rb:137:in `exec’

/var/www/discourse/lib/discourse.rb:32:in `execute_command’

/var/www/discourse/lib/backup_restore/backuper.rb:253:in `create_archive’

/var/www/discourse/lib/backup_restore/backuper.rb:40:in `run’

/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup’

/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in ’

/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork’

/var/www/discourse/script/spawn_backup_restore.rb:4:in `’

[2025-08-20 10:28:05] 正在删除旧备份…

[2025-08-20 10:28:06] 正在清理…

[2025-08-20 10:28:06] 正在删除 ‘.tar’ 剩余文件…

[2025-08-20 10:28:07] 正在将备份标记为完成…

[2025-08-20 10:28:07] 正在通知 ‘VegaMonika’ 备份结束…

您可能需要删除位于 /var/discourse/shared/standalone/backups/default 的 .tar 文件。

看起来您的上传量超过了备份容量。您需要 (1) 获取更大的磁盘,(2) 将资产移至 Spaces 或 S3,(3) 将上传内容移至卷,(4) 不备份上传内容。

最简单的即时解决方案是,在删除 .tar 文件后,不备份上传内容。

我已经执行过类似的操作,作为从一个 EC2 实例迁移到另一个更大实例的一部分,但前提是新服务器拥有与旧服务器完全相同的基本操作系统镜像、主机名、已安装软件和 IP 地址。将 /var/discourse 移动到新服务器后,我运行了 launcher rebuild app,站点就恢复正常了。

所以,在那些非常特定的情况下,我尝试的那一次效果非常好。

1 个赞

这是一种混乱的移动方式,但只要它是默认安装,并且您确保首先停止所有 Docker 容器,它可能会起作用。

1 个赞

snap remove aws-cli

.\\launcher stop app

docker system prune

apt autoremove

.\\launcher enter app

discourse backup

docker cp “app:/var/www/discourse/public/backups/default/your-site-2006-01-02-150405-v20200101150405.tar.gz “ “root@[server_ip_address]:/var/discourse/shared/standalone/backups/default/your-site-2006-01-02-150405-v20200101150405.tar.gz“

exit

snap install aws-cli --classic

aws configure

aws s3 cp “/var/discourse/shared/standalone/backups/default/your-site-2006-01-02-150405-v20200101150405.tar.gz“ “myBucket://your-site-2006-01-02-150405-v20200101150405.tar.gz“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.