將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲

對於傳統的 Linux 安裝,請將外部磁碟機永久掛載,在 Nextcloud 離線時複製整個資料目錄,然後將原始路徑符號連結到新位置。切勿直接更改datadirectory路徑config.php:Nextcloud 使用絕對路徑追蹤本地存儲,因此直接更改路徑可能會導致檔案和共用遺失。

此範例假設安裝的是軟體包或歸檔檔案。 Docker、Snap 和虛擬裝置安裝的路徑對應方式不同;請根據特定的部署方式調整掛載點,而不是盲目複製這些主機路徑。

哪些是確定的,哪些取決於你的伺服器

觀點該怎麼辦
已驗證:Nextcloud 使用絕對路徑來識別本機儲存。不小心移動文件可能會導致文件或共享資源孤立。使用符號連結保持配置路徑穩定;保留所有內容,包括.ncdata。
依配置不同:資料路徑、HTTP 使用者、檔案系統和服務名稱各不相同。檢查您的有效配置,並確認磁碟保留了所需的 Linux 所有權和權限。
依賴磁碟:無法保證可靠的啟動掛載和供電。透過 UUID 掛載,重新啟動後測試掛載,並防止 Nextcloud 在資料磁碟不存在時啟動。

檔案應用的外部儲存掛載功能會新增一個輔助儲存位置,但不會移動主資料目錄。您可以將其用於存放額外的資料夾或共用資料夾,並在伺服器本身的檔案和元資料必須保留在該磁碟機上時,再遷移資料目錄。

1.備份Nextcloud並確定來源路徑

備份資料庫config/、資料目錄、自訂應用程式和主題。確認資料庫備份可恢復;僅複製檔案並不能完全回滾。

config/config.php使用 `/ etc / data/path/ to occ config:system:get datadirectory...www-data/var/www/nextcloud/data

Linux 磁碟實用程序,顯示選定的外部磁碟機、ext4 檔案系統和掛載點字段
圖示:磁碟實用程式視圖顯示外部磁碟機和檔案系統詳細信息,以便在將其掛載到 Nextcloud 之前進行確認。

2. 將驅動器安裝在穩定的路徑上

運行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 運作時,請保持驅動器連線。

終端編輯器顯示了已掛載外部磁碟區的基於 UUID 的檔案系統條目
圖示:檔案系統表中的 UUID 條目表示持久掛載配置,而不是裝置名稱捷徑。

3. 將 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 停止執行時傳輸整個資料目錄。

4. 使用符號連結保留舊路徑

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 認為此方法不受支持,並警告說它可能會破壞資料庫。

一個有移動和符號連結指令的終端,後面跟著一條路徑檢查線
圖示:終端視圖顯示原始資料路徑連結到外部磁碟機目錄。

5. 重新啟動並驗證後再刪除回滾副本。

啟動 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 掛載相依性。

留下評論

將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲

將 Nextcloud 資料遷移到外部磁碟機而不破壞存儲

使用持久 UUID 掛載、維護模式、已驗證的副本和原始路徑符號鏈接,安全地將 Linux Nextcloud 資料目錄移至外部驅動器。

Nextcloud 資料庫更新後出現錯誤:我該先檢查什麼?

透過診斷 SQL 錯誤、檢查資料庫連線並安全地完成中斷的遷移,在更新後恢復 Nextcloud 存取。

使用 OCC 重設遺失的 Nextcloud 管理員密碼

使用 Nextcloud 的 OCC 命令從伺服器 shell 重設管理員密碼,並提供有關使用者名稱、權限和外部登入提供者的指導。

在為 Nextcloud 提供服務的 HTTPS 端點新增 HSTS 標頭

透過在 Apache、NGINX 或 TLS 代理程式上設定標頭來清除 Nextcloud 的 HSTS 警告,然後安全地驗證公共 HTTPS 回應。

排查 Nextcloud 應用程式安裝後報告無網路連線的問題

排查 Nextcloud 應用程式安裝後報告無網路連線的問題

追蹤 App Store 安裝失敗是否由 DNS、HTTPS、代理、TLS 或 Nextcloud 伺服器本身的設定問題所引起。

使用定時佇列來控制 Nextcloud 預覽版 CPU 峰值

將縮圖製作移至受控的後台計劃,修剪未使用的預覽尺寸,並在不使 Nextcloud 伺服器過載的情況下驗證佇列。

取得 Nextcloud 桌面同步功能,擺脫「處理文件」的束縛

找到導致 Nextcloud 同步失敗的檔案、排除規則、連線問題或用戶端資料庫狀態,然後安全地驗證上傳和下載。

透過調整右側限制來清除 Nextcloud OPcache 警告

找到觸發 Nextcloud 警告的 PHP OPcache 限制,更新正確的 Web PHP 配置,安全重啟,並驗證結果。

將 Nextcloud 連接到 CODE Docker:設定和權衡

將 Nextcloud 連接到 CODE Docker:設定和權衡

比較內建程式碼和基於 Docker 的程式碼,然後透過安全的 HTTPS 反向代理將 Collabora Online 連接到 Nextcloud。

使用 Galera 建構彈性 Nextcloud 集群

規劃一個可靠的 Nextcloud 高可用性部署,包括共用儲存、Redis 鎖定、支援仲裁的 MariaDB 路由和實用的故障轉移檢查。