如何在使用 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
orchown
而更改,這使我無法在此共享文件夾上創建具有postgres:postgres
權限的新文件夾。我已經嘗試添加postgres
到組vboxsf
和root
(我知道,不建議這樣做),但效果不佳。只有當裡面的所有文件夾/home/SharedFolder/postgres
都有postgres:postgres
權限。有沒有解決這個問題的方法?當我無法控制其目標文件夾(在本例中為 VirtualBox 共享文件夾位置)的權限時,如何更改 PostgreSQL 的數據文件夾位置?
我最終通過將共享文件夾直接安裝在 上找到了解決方案
/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 文件夾的副本,它就可以正常工作。