為 Nextcloud 已刪除檔案設定可靠的過期策略

若要自動清空 Nextcloud 的已刪除文件,請設定最大保留期限,並確保 Nextcloud 後台任務按計畫執行。例如,設定trashbin_retention_obligation自動auto, 30刪除超過 30 天的已刪除文件,然後每五分鐘執行一次 Nextcloud 建議的系統 cron 任務。僅靠預設auto策略無法保證在第 30 天立即刪除檔案。

自動刪除是永久性的。請選擇一個保留期限,以便用戶有時間恢復錯誤,並對任何必須在離開回收站後仍可恢復的內容保留備份。

Nextcloud 預設會清理哪些內容?

Nextcloud 35 的管理員文件中提到auto,已刪除的項目至少保留 30 天,之後如果儲存空間不足,則允許將其刪除。如果不需要空間,項目可能會保留超過 30 天。這種機制使得回收站成為一個恢復區域,而不是一個嚴格的 30 天刪除期限。

保單價值它的意義使用它
auto物品至少保留 30 天;如果之後需要騰出空間,再移除。您需要預設的復原視窗和基於空間的清理功能。
auto, 30自動刪除超過 30 天的項目;如果需要騰出空間,項目也可能提前刪除。您希望最大年齡為 30 天。
30, 90項目至少保留 30 天,90 天後刪除。你需要設定恢復視窗和保留期限上限。
disabled不要自動清理垃圾桶。您有單獨的保留流程,並打算保留已刪除的項目。

如果由於使用者刪除的檔案過多導致配額超額,則保留策略並非絕對有效:Nextcloud 可能會覆蓋已配置的策略,並清理檔案直至達到配額要求。在將策略套用至有配額限制的帳戶之前,請務必查看目前的回收站保留策略文件。

設定已刪除檔案的最大保存期限

occ請從 Nextcloud 安裝目錄以 HTTP 使用者身分執行,以確保檔案權限一致。在 Debian 或 Ubuntu 系統中,該使用者通常為www-data`/etc/Nextcloud`,安裝路徑通常為 `/etc/ /var/www/nextcloudNextcloud`。在其他系統或容器中,請替換為您自己的實際使用者和路徑。

cd /var/www/nextcloud
sudo -E -u www-data php occ config:system:set trashbin_retention_obligation --value='auto, 30'
終端命令將 trashbin_retention_obligation 設定為 auto, 30,輸出確認系統配置值。
將保留感知策略值設為自動,最大保留期限為 30 天。

此設定儲存在 Nextcloud 的系統配置中。若要查看目前值,請執行:

sudo -E -u www-data php occ config:system:get trashbin_retention_obligation

輸出結果應顯示auto, 30。如果您希望採用不同的策略,請使用上表並輸入對應的值。該30, 90選項旨在將項目保留至少 30 天,並在 90 天後刪除;配額限制仍可能強制提前清理。

確保後台作業可靠運作。

Nextcloud 將回收站過期作為後台任務運行。管理員手冊指出,回收站後台任務每 30 分鐘執行一次,但這仍取決於您的安裝環境中的後台任務執行程式是否被呼叫。 Nextcloud 建議使用作業系統自帶的 cron 任務來執行定期任務;其預設的 AJAX 模式可靠性較低,因為任務僅在使用者造訪網站時執行。

將 Nextcloud 設定為 cron 模式:

sudo -E -u www-data php occ background:cron
終端機執行 occ background:cron 指令,並顯示回應,表示後台作業已設定為 cron 模式。
將 Nextcloud 切換到 cron 模式,這樣規劃的後台任務就不會依賴使用者開啟網站。

然後編輯 Web 伺服器使用者的 crontab 檔案。在典型的 Debian 或 Ubuntu 主機上:

sudo crontab -u www-data -e

新增此行程式碼,如果您的安裝位置不同,請變更 PHP 執行檔或 Nextcloud 路徑:

*/5 * * * * php -f /var/www/nextcloud/cron.php
使用者專屬的 crontab 編輯器包含每五分鐘執行一次 /var/www/nextcloud/cron.php 的行。
使用 HTTP 使用者身分安排 cron.php 的運行。將範例中的 Nextcloud 路徑替換為您的安裝路徑。

此排程任務每五分鐘觸發一次 Nextcloud 的背景執行程式;各個任務各自執行獨立的排程任務。對於容器部署,請使用文件中提供的 cron 服務或排程任務,並cron.php以 Nextcloud Web 使用者身分執行。如果您的鏡像或平台已經執行了該任務,請勿盲目新增第二個任務。

如何安全地偵測保質期?

首先驗證策略和計劃任務。使用以下命令檢查策略occ config:system:get trashbin_retention_obligation,然後列出排程任務:

sudo crontab -u www-data -l
終端機顯示 cron.php 的活動自動、30 保留值和 5 分鐘的 cron 條目。
檢查已儲存的保留值,並確認 Web 伺服器使用者擁有定期執行的 cron.php 條目。

在 Nextcloud 的管理設定中,確認後台作業已設定為Cron,且上次作業執行時間已遞增。在配置的最大保留期限過後,檢查「已刪除檔案」中是否存在可以安全刪除的舊測試項目。過期作業會按計畫運行,因此清理工作不一定會在達到保留期限時立即完成。

若要使用自訂保留策略進行一次性測試,請執行保留感知命令:

sudo -E -u www-data php occ trashbin:expire --quiet

在目前版本的 Nextcloud 中,trashbin:expire此操作會套用配置的保留期限。使用預設auto策略時,該指令會在未過期項目的情況下退出;預設的自動過期由後台作業處理。請勿替換為trashbin:cleanup --all-users:該命令會永久刪除所有使用者的所有已刪除文件,無論文件創建時間長短,並且並非常規的保留設定。

快速查核清單

  • 傳回的有效策略與occ config:system:get trashbin_retention_obligation您預期的保留期限相符。
  • Nextcloud 後台作業已設定為 Cron,且 web 伺服器使用者的 crontab 包含正確的cron.php路徑。
  • 管理設定中最後一次作業執行時間有所調整。
  • 超過最大期限的舊測試項目會在後台作業運行後消失,而較新的項目則會保留,除非儲存空間或配額壓力需要清理。

如果上次執行時間沒有更新,請在變更保留值之前,先排查系統 cron 任務、PHP CLI 路徑、Web 伺服器使用者和 Nextcloud 路徑的問題。如果後台運行程式從未執行,即使策略正確也無法清除任何內容。

官方文件

留下評論

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

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

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

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

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

將 Elasticsearch 全文搜尋功能新增至 Nextcloud

將 Nextcloud 的檔案搜尋連接到 Elasticsearch,索引文件內容,並選擇適合您的伺服器和安全需求的設定。

為 Nextcloud 已刪除檔案設定可靠的過期策略

為 Nextcloud 已刪除檔案設定可靠的過期策略

配置 Nextcloud 在規定的保留期後刪除已刪除的文件,可靠地安排後台作業,並避免執行清除所有使用者回收站的命令。

清除 Nextcloud 缺少資料庫索引警告

清除 Nextcloud 缺少資料庫索引警告

安全地執行 Nextcloud 的 OCC 修復程序,預覽資料庫更改,並檢查警告仍然存在的原因。

將 Nextcloud 的 Web 上傳限制提高到 2 GB 以上

將 Nextcloud 的 Web 上傳限制提高到 2 GB 以上

透過調整 PHP、Nginx 或 Apache、暫存和逾時設置,讓 Nextcloud 瀏覽器上傳更大的文件,並驗證是哪個限制阻止了文件上傳。

清除 Nextcloud Web 伺服器上的 PHP 記憶體警告

設定 Nextcloud 實際使用的 PHP 記憶體限制,重新啟動對應的服務,並在管理概覽中確認 512 MB 設定。

將 S3 相容存儲桶連接到 Nextcloud 外部存儲

使用 Nextcloud 的 S3 後端,透過正確的端點、憑證、存取範圍和驗證步驟,掛載相容的物件儲存桶。

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

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

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

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

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