使用 occ 指令安全地清除 ownCloud 檔案版本
刪除一個帳戶或所有使用者的所有已儲存的 ownCloud Server Classic 檔案版本,並區分完全清除和基於保留期限的過期。
對於ownCloud Server Classic,管理員可以使用以下命令刪除已儲存的檔案版本occ versions:cleanup。新增一個或多個使用者 ID 可以限制清除範圍;僅當您打算刪除所有使用者的版本歷史記錄時才省略使用者 ID。此操作會破壞現有數據,因此請務必先備份 ownCloud 資料庫和檔案儲存。
假設範例: Alex 管理著一台經典版 ownCloud 伺服器,需要刪除一個名為 `<test account_name>` 的已停用測試帳戶的舊版本demo_user。此虛構範例展示了目標命令,並將其與伺服器範圍的清理操作進行比較;它並不描述實際運行過程或結果。
以下步驟使用occownCloud Server 10.16 的命令列介面。這些步驟不適用於 ownCloud Infinite Scale (oCIS),因為 oCIS 使用不同的指令集。如果您不確定安裝的是哪個產品,請在執行清除操作之前諮詢管理員。
在標準的 Linux 系統中,切換到 ownCloud 安裝目錄。以下路徑以 Ubuntu 為例;請使用您實際的路徑:
cd /var/www/owncloud
請檢查 Versions 應用程式是否已啟用,並驗證您要使用的目標帳戶 ID:
sudo -u www-data ./occ app:list --enabled files_versions

files_versions在使用清理指令前,請先檢查該應用程式是否已啟用。ownCloud 參考文件指出,版本控制指令僅在files_versions啟用後可用,在單一使用者維護模式下不可用。請occ以 Web 伺服器的 HTTP 使用者身分執行該命令,以確保檔案權限保持一致。在 Debian 或 Ubuntu 系統中,該使用者通常為 `/usr/local` www-data;其他發行版可能使用不同的帳戶。請參閱ownCloud 的 `occ` 命令參考文件。
刪除歷史記錄前,請使用您常用的 ownCloud 備份流程進行備份。備份內容應包含資料庫以及儲存使用者檔案和版本的儲存位置。確認備份已完成且可還原;僅備份資料庫可能不包含實際的版本檔案。
以 Alex 的假設情況為例,預期範圍僅限於此demo_user。使用者 ID 必須與此伺服器上的帳戶相符。請勿替換為電子郵件地址、顯示名稱或其他用戶,因為該命令僅接受用戶 ID。在執行命令前,請在 ownCloud 的使用者管理介面中確認帳戶標識符,尤其是在目錄服務中的名稱與登入 ID 不同的情況下。
如果目標是刪除此帳戶的所有舊版本,請使用以下versions:cleanup命令。此命令沒有提供試運行選項,因此在執行前請檢查目標和備份。請勿為此操作將伺服器置於單一使用者維護模式:ownCloud 文件指出,在該模式下版本命令不可用。
對於常規的 Linux 安裝,請以 HTTP 使用者身分從 ownCloud 目錄執行命令。在 Debian 或 Ubuntu 系統上,Alex 會運作:
sudo -u www-data ./occ versions:cleanup demo_user

demo_user此限制後,清理範圍將僅限於該 ownCloud 帳戶。依照文件說明的語法,此函數versions:cleanup [user_id]...接受一個或多個帳戶 ID。如果未提供 ID,則會刪除所有使用者的版本化檔案。僅在明確批准該範圍後才可使用全域形式:
sudo -u www-data ./occ versions:cleanup

ownCloud 的範例顯示,如果未提供 ID,則命令會識別所有要刪除的使用者;提供 ID 會將操作範圍縮小到這些帳戶。手冊還指出,即使正常的保留策略不會使已發布的持久性主版本過期,管理員也可以使用此命令將其刪除。在清除可能包含已批准或已發布修訂的帳戶之前,請先諮詢內容所有者。不要添加--no-interaction跳過提示。對於容器安裝,文件中記錄的模式是docker exec --user www-data <owncloud-container-name> occ <your-command>;將佔位符替換為實際的容器名稱和您選擇的命令。如果您的部署使用不同的容器用戶,請參閱Docker 和 occ 說明。
如果 Alex 希望 ownCloud 僅刪除已根據配置的保留策略過期的版本,則更合適的命令是:
sudo -u www-data ./occ versions:expire demo_user

versions:expire它會套用已配置的保留規則;但不保證刪除所有已儲存的版本。ownCloud 文件versions:expire將刪除過期版本定義為僅刪除符合特定條件的版本versions_retention_obligation。相較之下,versions:cleanup刪除選定範圍內的所有版本。在更改策略前,請務必查看已記錄的版本保留設定。此設定disabled會停用版本刪除,但不會清除已儲存的版本。
本文介紹的是 ownCloud Server Classic。 Infinite Scale 有其自身的版本清理命令;請遵循oCIS 版本清理文件中的說明,而不是直接執行occ其中的命令。
指令執行完畢且無錯誤後,開啟目標帳號所擁有檔案的「版本」視圖。確認先前的版本不再列出,並且當前文件仍然存在。對於所有使用者的清理,請檢查代表性帳戶,而不是假設目標命令已全域運行。保留備份,直到所有者確認不再需要任何歷史版本。如果您的目的只是為了滿足保留策略,請使用versions:expire該策略並進行驗證,而不是期望立即完全清除。
此命令專門用於文件版本。它不會清除「已刪除檔案」回收站中的項目、刪除備份存檔或刪除目前檔案本身。請將這些操作視為單獨的資料保留任務;切勿手動刪除版本目錄來取代文件中提供的命令。
刪除一個帳戶或所有使用者的所有已儲存的 ownCloud Server Classic 檔案版本,並區分完全清除和基於保留期限的過期。
以正確的順序檢查伺服器 URL、手機網路、HTTPS 端點和伺服器日誌,即可追蹤 ownCloud 行動連線被拒絕的原因。
將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。
透過 Apache、Nginx 或反向代理程式追蹤 WebDAV 請求,然後使用經過驗證的 PROPFIND 測試確認 ownCloud 同步功能正常。
透過設定其規範 URL 並從伺服器本身檢查 DNS、HTTPS 和反向代理路由,修復 Nextcloud 缺少出站位址警告的問題。
透過本機 Unix 套接字配置 APCu 和 Redis,以實現 Nextcloud 快取和檔案鎖定,並提供目前和舊版 Nextcloud 的步驟。
檢查 Nextcloud 的 cron 模式,修復其 systemd 服務和計時器,並驗證後台作業在啟動後以及每隔五分鐘運行一次。
啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。
使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。
為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。