使用 occ 指令安全地清除 ownCloud 檔案版本

對於ownCloud Server Classic,管理員可以使用以下命令刪除已儲存的檔案版本occ versions:cleanup。新增一個或多個使用者 ID 可以限制清除範圍;僅當您打算刪除所有使用者的版本歷史記錄時才省略使用者 ID。此操作會破壞現有數據,因此請務必先備份 ownCloud 資料庫和檔案儲存。

假設範例: Alex 管理著一台經典版 ownCloud 伺服器,需要刪除一個名為 `<test account_name>` 的已停用測試帳戶的舊版本demo_user。此虛構範例展示了目標命令,並將其與伺服器範圍的清理操作進行比較;它並不描述實際運行過程或結果。

1. 確認 ownCloud 版本和目標平台

以下步驟使用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

終端機顯示用於檢查 ownCloud 的 files_versions 應用程式是否已啟用的命令。
files_versions在使用清理指令前,請先檢查該應用程式是否已啟用。

ownCloud 參考文件指出,版本控制指令僅在files_versions啟用後可用,在單一使用者維護模式下不可用。請occ以 Web 伺服器的 HTTP 使用者身分執行該命令,以確保檔案權限保持一致。在 Debian 或 Ubuntu 系統中,該使用者通常為 `/usr/local` www-data;其他發行版可能使用不同的帳戶。請參閱ownCloud 的 `occ` 命令參考文件。

2. 後退並選擇範圍

刪除歷史記錄前,請使用您常用的 ownCloud 備份流程進行備份。備份內容應包含資料庫以及儲存使用者檔案和版本的儲存位置。確認備份已完成且可還原;僅備份資料庫可能不包含實際的版本檔案。

以 Alex 的假設情況為例,預期範圍僅限於此demo_user。使用者 ID 必須與此伺服器上的帳戶相符。請勿替換為電子郵件地址、顯示名稱或其他用戶,因為該命令僅接受用戶 ID。在執行命令前,請在 ownCloud 的使用者管理介面中確認帳戶標識符,尤其是在目錄服務中的名稱與登入 ID 不同的情況下。

如果目標是刪除此帳戶的所有舊版本,請使用以下versions:cleanup命令。此命令沒有提供試運行選項,因此在執行前請檢查目標和備份。請勿為此操作將伺服器置於單一使用者維護模式:ownCloud 文件指出,在該模式下版本命令不可用。

3. 執行定向清理,或刻意選擇所有用戶

對於常規的 Linux 安裝,請以 HTTP 使用者身分從 ownCloud 目錄執行命令。在 Debian 或 Ubuntu 系統上,Alex 會運作:

sudo -u www-data ./occ versions:cleanup demo_user

終端機顯示目標指令 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

終端機顯示全域版本清理指令,但沒有顯示使用者 ID,旁邊還有一個警告符號。
省略用戶 ID 將選擇所有用戶,因此請在繼續操作之前確認是否為伺服器範圍。

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

4. 僅當保留規則是目標時才使用過期時間。

如果 Alex 希望 ownCloud 僅刪除已根據配置的保留策略過期的版本,則更合適的命令是:

sudo -u www-data ./occ versions:expire demo_user

終端機顯示虛構的 demo_user 帳號的 versions:expire 指令。
versions:expire它會套用已配置的保留規則;但不保證刪除所有已儲存的版本。

ownCloud 文件versions:expire將刪除過期版本定義為僅刪除符合特定條件的版本versions_retention_obligation。相較之下,versions:cleanup刪除選定範圍內的所有版本。在更改策略前,請務必查看已記錄的版本保留設定。此設定disabled會停用版本刪除,但不會清除已儲存的版本。

本文介紹的是 ownCloud Server Classic。 Infinite Scale 有其自身的版本清理命令;請遵循oCIS 版本清理文件中的說明,而不是直接執行occ其中的命令。

驗證結果

指令執行完畢且無錯誤後,開啟目標帳號所擁有檔案的「版本」視圖。確認先前的版本不再列出,並且當前文件仍然存在。對於所有使用者的清理,請檢查代表性帳戶,而不是假設目標命令已全域運行。保留備份,直到所有者確認不再需要任何歷史版本。如果您的目的只是為了滿足保留策略,請使用versions:expire該策略並進行驗證,而不是期望立即完全清除。

此命令專門用於文件版本。它不會清除「已刪除檔案」回收站中的項目、刪除備份存檔或刪除目前檔案本身。請將這些操作視為單獨的資料保留任務;切勿手動刪除版本目錄來取代文件中提供的命令。

留下評論

使用 occ 指令安全地清除 ownCloud 檔案版本

使用 occ 指令安全地清除 ownCloud 檔案版本

刪除一個帳戶或所有使用者的所有已儲存的 ownCloud Server Classic 檔案版本,並區分完全清除和基於保留期限的過期。

ownCloud 行動連線被拒絕?請檢查 URL 和可及性

ownCloud 行動連線被拒絕?請檢查 URL 和可及性

以正確的順序檢查伺服器 URL、手機網路、HTTPS 端點和伺服器日誌,即可追蹤 ownCloud 行動連線被拒絕的原因。

使用 Systemd 定時器可靠地執行 ownCloud 後台作業

將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。

透過尋找故障路由來恢復 ownCloud WebDAV 同步

透過 Apache、Nginx 或反向代理程式追蹤 WebDAV 請求,然後使用經過驗證的 PROPFIND 測試確認 ownCloud 同步功能正常。

設定 Nextcloud 的公共 URL,以便它可以存取自身。

透過設定其規範 URL 並從伺服器本身檢查 DNS、HTTPS 和反向代理路由,修復 Nextcloud 缺少出站位址警告的問題。

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

透過本機 Unix 套接字配置 APCu 和 Redis,以實現 Nextcloud 快取和檔案鎖定,並提供目前和舊版 Nextcloud 的步驟。

使用 Systemd 定時器自動執行 Nextcloud Cron

檢查 Nextcloud 的 cron 模式,修復其 systemd 服務和計時器,並驗證後台作業在啟動後以及每隔五分鐘運行一次。

使用 Redis 清除 Nextcloud 的檔案鎖定警告

啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。

如何才能獲得 Nextcloud A+ 安全評級

如何才能獲得 Nextcloud A+ 安全評級

使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。

啟用 Nextcloud 伺服器端加密,並評估其影響

為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。