使用 VirtualBox 时如何将 PostgreSQL 数据文件夹更改为共享文件夹位置?

使用 VirtualBox 时如何将 PostgreSQL 数据文件夹更改为共享文件夹位置?

我正在跟进本教程这解释了如何移动 PostgreSQL 数据文件夹位置。基本上,我只需要将里面的文件复制/var/lib/postgresql到不同的位置......比如:

sudo rsync -av /var/lib/postgresql /mnt/volume

然后在文件中/etc/postgresql/9.5/main/postgresql.conf我更改了行data_directory = '/mnt/volume/postgresql/12/main'...

该解决方案工作得很好,唯一的条件是复制的文件夹需要postgres:postgres递归地具有权限。

当我将 VirtualBox 与主机和来宾之间的共享文件夹位置一起使用时,问题就开始了,假设我的共享文件夹位置位于 中,/home/SharedFolder并且我在虚拟机中安装了 PostgreSQL。这些 VirtualBox 共享文件夹始终出现在具有权限的来宾中root:vboxsf,这些权限不会随chmod或改变chown,这使得我无法在此具有postgres:postgres权限的共享文件夹上创建新文件夹。我尝试过添加postgres到组中vboxsfroot我知道,不建议这样做),但效果不佳。只有当里面的所有文件夹/home/SharedFolder/postgres都有postgres:postgres权限时它才起作用。有解决这个问题的方法吗?当我无法控制目标文件夹(在本例中为 VirtualBox 共享文件夹位置)的权限时,如何更改 PostgreSQL 的数据文件夹位置?

答案1

我最终通过直接安装共享文件夹找到了解决方案/etc/fstab,我们可以从那里强制保留我们想要的权限。基本上,我共享了一个在主机上未激活自动挂载的文件夹:

在此输入图像描述

/etc/fstab然后我在来宾文件中添加了以下行:

postgresql /home/path/guest/postgresql/ vboxsf uid=postgres,gid=postgres 0 0

最后我将data_directory里面的变量更改/etc/postgresql/12/main/postgresql.conf为:

data_directory = '/home/path/guest/postgresql/12/main'

只要里面的数据postgresql是原始 postgresql 文件夹的副本,它就可以正常工作。

相关内容