Nextcloud的HDD變更

5 min

language: ja bn en es hi pt ru zh-cn zh-tw

大家好,我是無能。
實際上,如果是在雲端主機上,因磁碟損壞而更改資料儲存位置的情況,大概只有在環境遷移時才會發生,但我將NextCloud的資料儲存在一個快要損壞的HDD上,所以我決定將其指定到另一個HDD。
我使用NextCloud的方式,只是作為本機環境的媒體播放器,或者暫時且簡單地用於不同OS之間的檔案共享,所以沒有重要檔案。例如,儲存著家中某台機器裡的資料,像是從不啟動的EEPROM吸取機器的BIOS檔案,或是製作筆記。還有就是隨手丟一些不知不覺累積起來的PDF檔案。

實際上,只需更改掛載點即可,所以似乎沒有必要做這些,但由於我已經為一個已掛載的HDD指定了另一個掛載點,感覺可能會影響到其他shell腳本,所以為了心理上的清爽,我決定另外建立一個。

老實說,即使不更改NextCloud的config/config.php設定檔中datadirectory的路徑,只需在原始指定位置建立符號連結即可,但總覺得不舒服,所以我決定在另一個HDD上另外建立一個NextCloud資料目錄並指定它。

※這篇文章不是資料遷移,而是磁碟變更。

建立資料目錄

我將在已掛載的HDD上建立NextCloud的資料目錄。
然後,由於似乎如果不安裝.ocdata會被警告,所以用touch建立它。我忘了即使使用-R選項,它也不會遞迴地查看.檔案

sudo mkdir /media/3t/ncdata
sudo touch /media/3t/ncdata/.ocdata
sudo chown www-data:www-data /media/3t/ncdata
sudo chown www-data:www-data /media/3t/ncdata/.ocdata
sudo chmod 750 /media/3t/ncdata

編輯 config.php

而且,如果datadirectory已經不存在,甚至無法進入維護模式,所以我會先編輯config/php檔案來更改設定,然後再進行包括操作確認在內的步驟。

cd /your/nextcloud/dir
sudo vim config/config.php

然後將以下設定指定到剛才建立的目錄。

  'datadirectory' => '/media/3t/ncdata',

現在,如果開啟維護模式後沒有收到錯誤,就再次關閉它。

cd /your/nextcloud/dir
$ sudo -u www-data php ./occ maintenance:mode --on
Maintenance mode enabled
$ sudo -u www-data php ./occ maintenance:mode --off
Maintenance mode disabled

OK。

再次執行檔案掃描

也許是因為我安裝了外掛程式,如果在NextCloud登入後,外掛程式指定的路徑中存在已不存在的目錄,我就會收到錯誤,無法查看內容。
我將再次進入維護模式,執行檔案掃描,並重新取得檔案索引。

cd /your/nextcloud/dir
$ sudo -u www-data php ./occ maintenance:mode --on
Maintenance mode enabled
$ sudo -u www-data php ./occ files:scan --all
Starting scan for user 1 out of 2 (Fox)
Path not found: User folder /media/3t/ncdata/Fox/ exists in cache but not on disk
Starting scan for user 2 out of 2 (nextcloud)
Path not found: User folder /media/3t/ncdata/nextcloud/files exists in cache but not on disk
+---------+-------+-----+---------+---------+--------+--------------+
| Folders | Files | New | Updated | Removed | Errors | Elapsed time |
+---------+-------+-----+---------+---------+--------+--------------+
| 0       | 0     | 0   | 0       | 0       | 2      | 00:00:00     |
+---------+-------+-----+---------+---------+--------+--------------+
$ sudo -u www-data php ./occ maintenance:mode --off
Maintenance mode disabled

哦... 好像有錯誤...
所以我會建立那些被告知不存在的目錄。

sudo mkdir /media/3t/ncdata/Fox/files
sudo mkdir /media/3t/ncdata/nextcloud/files
sudo chown -R www-data:www-data /media/3t/ncdata
sudo chmod -R 750 /media/3t/ncdata

這樣就完成了。

再次掃描

cd /your/nextcloud/dir
sudo -u www-data php ./occ files:scan --all

如果這樣通過,就順利完成了。

確認到這裡,我將只針對檔案削減NextCloud資料檔案的權限。

cd /media/3t
sudo find ./ncdata  -type f -exec chmod 640 {} \;

上次我在Android裝置上使用自己的WireGuard VPN進行連接,所以現在可以在連接VPN的狀態下存取NextCloud了。
以前我透過Nginx的反向代理使用MyDNS隨意租用的免費DNS,但在透過反向代理的環境下,播放媒體時會出現搜尋條無法使用的現象,現在也解決了。

從安全性角度來看,我也在考慮是否可以不再使用MyDNS上的網域進行存取了。

順帶一提,我不組建RAID的原因是經常看到RAID控制器損壞時會遇到地獄般的情況,所以我想消除這方面的麻煩。如果要做的話,我會考慮ZFS,但只有當我想使用的資料空間超過5TB時才會考慮組建。

就我個人而言,我希望能在資料中心大量釋出SSD時,趁機入手。
就到這裡。下次再見。

Related Posts