將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲
使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。
對於傳統的 Linux 安裝,請將外部磁碟機永久掛載,在 Nextcloud 離線時複製整個資料目錄,然後將原始路徑符號連結到新位置。切勿直接更改datadirectory路徑config.php:Nextcloud 使用絕對路徑追蹤本地存儲,因此直接更改路徑可能會導致檔案和共用遺失。
此範例假設安裝的是軟體包或歸檔檔案。 Docker、Snap 和虛擬裝置安裝的路徑對應方式不同;請根據特定的部署方式調整掛載點,而不是盲目複製這些主機路徑。
| 觀點 | 該怎麼辦 |
|---|---|
| 已驗證:Nextcloud 使用絕對路徑來識別本機儲存。不小心移動文件可能會導致文件或共享資源孤立。 | 使用符號連結保持配置路徑穩定;保留所有內容,包括.ncdata。 |
| 依配置不同:資料路徑、HTTP 使用者、檔案系統和服務名稱各不相同。 | 檢查您的有效配置,並確認磁碟保留了所需的 Linux 所有權和權限。 |
| 依賴磁碟:無法保證可靠的啟動掛載和供電。 | 透過 UUID 掛載,重新啟動後測試掛載,並防止 Nextcloud 在資料磁碟不存在時啟動。 |
檔案應用的外部儲存掛載功能會新增一個輔助儲存位置,但不會移動主資料目錄。您可以將其用於存放額外的資料夾或共用資料夾,並在伺服器本身的檔案和元資料必須保留在該磁碟機上時,再遷移資料目錄。
備份資料庫config/、資料目錄、自訂應用程式和主題。確認資料庫備份可恢復;僅複製檔案並不能完全回滾。
config/config.php使用 `/ etc / data/path/ to occ config:system:get datadirectory...www-data/var/www/nextcloud/data

運行lsblk -f並記下分割區的檔案系統 UUID。諸如 `/etc/fstab` 之類的名稱/dev/sdb1可能會更改,因此請在掛載配置中使用 UUID。
對於使用 ext4 檔案系統的 Linux 伺服器,建立一個掛載點,並在 `/etc/config.yml` 檔案中新增類似這樣的行/etc/fstab,將範例 UUID 替換為實際的 UUID:
UUID=YOUR-DRIVE-UUID /srv/nextcloud-disk ext4 defaults 0 2
使用分割區上已有的檔案系統類型;此行不會對其進行格式化。請驗證檔案系統是否保留了 Nextcloud 所需的所有權和權限。
在向其上放置任何資料之前,請先掛載並驗證其效能:
sudo mkdir -p /srv/nextcloud-disk
sudo mount /srv/nextcloud-disk
findmnt /srv/nextcloud-disk
確認輸出結果能夠辨識外部分區。若使用nofail,還需限制掛載點上的 Web/PHP 服務;否則,磁碟遺失可能會導致掛載點目錄為空,但仍會接收寫入作業。可以使用 systemd 插件RequiresMountsFor=/srv/nextcloud-disk。在 Nextcloud 運作時,請保持驅動器連線。

維護模式會阻止登錄,但不會停止所有排程任務。在複製檔案之前,請暫停 Nextcloud 的 cron 任務或其 systemd 計時器,停止同步用戶端,並停止 Web/PHP 服務,以避免在複製過程中出現檔案變更要求。
sudo -E -u www-data php /var/www/nextcloud/occ maintenance:mode --on
停用排程器並停止 Web/PHP 服務後,以 root 使用者身分複製資料目錄,以保留所有權、權限、ACL 和隱藏檔案:
sudo mkdir -p /srv/nextcloud-disk/data
sudo rsync -Aavx --numeric-ids /var/www/nextcloud/data/ /srv/nextcloud-disk/data/
末端的斜線會複製目錄內容。保留舊副本;檢查rsync錯誤並確認新.ncdata副本已存在於新目錄的根目錄中。

Nextcloud 的故障排除手冊建議將原始路徑連結到新目錄。驗證副本後,重新命名舊目錄以便回滾,然後建立連結:
sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.pre-move
sudo ln -s /srv/nextcloud-disk/data /var/www/nextcloud/data
readlink -f /var/www/nextcloud/data
確認路徑解析正確/srv/nextcloud-disk/data。 Web 使用者必須遍歷父目錄並對.ncdata目標進行讀寫操作:
sudo -u www-data test -r /var/www/nextcloud/data/.ncdata
sudo -u www-data test -w /var/www/nextcloud/data
如果檢查失敗,請修正您的 Web 使用者的所有權或父級權限;不要將目錄設定為全域可寫入。某些 Web 伺服器必須允許符號連結。如果無法做到這一點,請勿oc_storages手動編輯:Nextcloud 認為此方法不受支持,並警告說它可能會破壞資料庫。

啟動 web/PHP 並重新啟用調度程式。確認掛載和符號鏈接,然後關閉維護模式:
findmnt /srv/nextcloud-disk
sudo -E -u www-data php /var/www/nextcloud/occ status
sudo -E -u www-data php /var/www/nextcloud/occ maintenance:mode --off
登錄,打開現有文件和共享資料夾,並上傳/下載一個小文件。檢查 Nextcloud 和 Web 伺服器日誌,然後在維護視窗重新啟動伺服器,以確認 Nextcloud 啟動前磁碟已掛載。
保留data.pre-move資料庫備份,直到重新啟動並正常同步成功。如果遷移失敗,請啟用維護模式,停止應用程序,並恢復原始目錄和服務狀態。常規方法files:scan無法修復錯誤的掛載。
啟動時請檢查磁碟掛載情況,確認原始路徑能夠解析到該磁碟,Web 使用者可以進行讀寫操作,並且現有檔案以及少量上傳檔案都能正常運作。如果 Nextcloud 在重新啟動後報告檔案遺失,請停止應用程式並檢查掛載情況,然後再允許寫入操作。
參考資料:Nextcloud 資料目錄 移動指南;Nextcloud 備份和維護模式指南;Nextcloud 資料目錄位置和所有權;Nextcloud 外部儲存作為輔助掛載;Linux 掛載文件中的 UUID 識別碼;systemd 掛載相依性。
使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。
透過診斷 SQL 錯誤、檢查資料庫連線並安全地完成中斷的遷移,在更新後恢復 Nextcloud 存取。
使用 Nextcloud 的 OCC 命令從伺服器 shell 重設管理員密碼,並提供有關使用者名稱、權限和外部登入提供者的指導。
透過在 Apache、NGINX 或 TLS 代理程式上設定標頭來清除 Nextcloud 的 HSTS 警告,然後安全地驗證公共 HTTPS 回應。
追蹤 App Store 安裝失敗是否由 DNS、HTTPS、代理、TLS 或 Nextcloud 伺服器本身的設定問題所引起。
將縮圖製作移至受控的後台計劃,修剪未使用的預覽尺寸,並在不使 Nextcloud 伺服器過載的情況下驗證佇列。
找到導致 Nextcloud 同步失敗的檔案、排除規則、連線問題或用戶端資料庫狀態,然後安全地驗證上傳和下載。
找到觸發 Nextcloud 警告的 PHP OPcache 限制,更新正確的 Web PHP 配置,安全重啟,並驗證結果。
比較內建程式碼和基於 Docker 的程式碼,然後透過安全的 HTTPS 反向代理將 Collabora Online 連接到 Nextcloud。
規劃一個可靠的 Nextcloud 高可用性部署,包括共用儲存、Redis 鎖定、支援仲裁的 MariaDB 路由和實用的故障轉移檢查。