← Back
Editing: file_versioning.html
<!DOCTYPE html> <html class="writer-html5" lang="en" data-content_root="../"> <head> <meta charset="utf-8" /> <meta name="readthedocs-addons-api-version" content="1"><meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Controlling file versions and aging — Nextcloud latest Administration Manual latest documentation</title> <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" /> <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" /> <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" /> <link rel="stylesheet" type="text/css" href="../_static/custom.css?v=8ff6e0db" /> <link rel="stylesheet" type="text/css" href="../_static/dark_mode_css/general.css?v=c0a7eb24" /> <link rel="stylesheet" type="text/css" href="../_static/dark_mode_css/dark.css?v=70edf1c7" /> <link rel="canonical" href="https://docs.nextcloud.com/server/stable/admin_manual/configuration_files/file_versioning.html" /> <script src="../_static/jquery.js?v=5d32c60e"></script> <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> <script src="../_static/documentation_options.js?v=a49d5d77"></script> <script src="../_static/doctools.js?v=9bcbadda"></script> <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/clipboard.min.js?v=a7894cd8"></script> <script src="../_static/copybutton.js?v=f281be69"></script> <script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script> <script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script> <script src="../_static/js/theme.js"></script> <script src="../_static/js/versions.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="Deleted Items (trash bin)" href="trashbin_configuration.html" /> <link rel="prev" title="Previews configuration" href="previews_configuration.html" /> </head> <body class="wy-body-for-nav"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-scroll"> <div class="wy-side-nav-search" > <a href="../contents.html"> <img src="../_static/logo-white.png" class="logo" alt="Logo"/> </a> <div class="switch-menus"> <div class="version-switch"></div> <div class="language-switch"></div> </div> <div role="search"> <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> <p class="caption" role="heading"><span class="caption-text">Getting Started</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li> <li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li> <li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li> <li class="toctree-l1"><a class="reference internal" href="../declarations/index.html">Declarations</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Release notes</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Critical changes</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Installation</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li> <li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Configuration</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">Nextcloud configuration</a></li> <li class="toctree-l1"><a class="reference internal" href="../occ_command.html">Using the occ command</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li> <li class="toctree-l1"><a class="reference internal" href="../webhook_listeners/index.html">Webhook Listeners</a></li> <li class="toctree-l1"><a class="reference internal" href="../windmill_workflows/index.html">Windmill Workflows</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Files</span></p> <ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="index.html">File sharing and management</a><ul class="current"> <li class="toctree-l2"><a class="reference internal" href="file_sharing_configuration.html">File Sharing</a></li> <li class="toctree-l2"><a class="reference internal" href="federated_cloud_sharing_configuration.html">Configuring Federation Sharing</a></li> <li class="toctree-l2"><a class="reference internal" href="big_file_upload_configuration.html">Uploading big files > 512MB</a></li> <li class="toctree-l2"><a class="reference internal" href="default_files_configuration.html">Providing default files</a></li> <li class="toctree-l2"><a class="reference internal" href="primary_storage.html">Configuring Object Storage as Primary Storage</a></li> <li class="toctree-l2"><a class="reference internal" href="external_storage_configuration_gui.html">Configuring External Storage (GUI)</a></li> <li class="toctree-l2"><a class="reference internal" href="external_storage/auth_mechanisms.html">External Storage authentication mechanisms</a></li> <li class="toctree-l2"><a class="reference internal" href="encryption_configuration.html">Server-side encryption configuration</a></li> <li class="toctree-l2"><a class="reference internal" href="encryption_details.html">Server-side encryption details</a></li> <li class="toctree-l2"><a class="reference internal" href="encryption_migration.html">Server-side encryption migration</a></li> <li class="toctree-l2"><a class="reference internal" href="files_locking_transactional.html">Transactional file locking</a></li> <li class="toctree-l2"><a class="reference internal" href="previews_configuration.html">Previews configuration</a></li> <li class="toctree-l2 current"><a class="current reference internal" href="#">Controlling file versions and aging</a><ul> <li class="toctree-l3"><a class="reference internal" href="#during-version-creation">During Version Creation</a></li> <li class="toctree-l3"><a class="reference internal" href="#during-the-regular-background-job">During the Regular Background Job</a></li> <li class="toctree-l3"><a class="reference internal" href="#background-job">Background job</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="trashbin_configuration.html">Deleted Items (trash bin)</a></li> <li class="toctree-l2"><a class="reference internal" href="file_conversion.html">File conversion</a></li> <li class="toctree-l2"><a class="reference internal" href="windows_compatible_filenames.html">Windows compatible filenames</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li> <li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Apps</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li> <li class="toctree-l1"><a class="reference internal" href="../exapps_management/index.html">ExApps management</a></li> <li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Users</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li> <li class="toctree-l1"><a class="reference internal" href="../desktop/index.html">Desktop Clients</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Groupware</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../groupware/index.html">Groupware</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Office</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Maintenance</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../configuration_monitoring/index.html">Monitoring</a></li> <li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li> <li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Links</span></p> <ul> <li class="toctree-l1"><a class="reference external" href="https://help.nextcloud.com/">Community Help Forum</a></li> <li class="toctree-l1"><a class="reference external" href="https://docs.nextcloud.com/">User Manuals</a></li> <li class="toctree-l1"><a class="reference external" href="https://docs.nextcloud.com/">Developer Manuals</a></li> <li class="toctree-l1"><a class="reference external" href="https://nextcloud.com/install/">Download</a></li> <li class="toctree-l1"><a class="reference external" href="https://apps.nextcloud.com">App Store</a></li> <li class="toctree-l1"><a class="reference external" href="https://help.nextcloud.com/t/translation-knowledge-valid-for-the-entire-nextcloud-project-wiki/51550">Translations</a></li> <li class="toctree-l1"><a class="reference external" href="https://github.com/nextcloud/">GitHub</a></li> <li class="toctree-l1"><a class="reference external" href="https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule">Supported versions</a></li> <li class="toctree-l1"><a class="reference external" href="https://nextcloud.com/enterprise/">Nextcloud Enterprise</a></li> <li class="toctree-l1"><a class="reference external" href="https://github.com/nextcloud/server/blob/master/COPYING-README">License</a></li> <li class="toctree-l1"><a class="reference external" href="https://nextcloud.com/">Nextcloud GmbH</a></li> </ul> </div> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="../contents.html">Nextcloud latest Administration Manual</a> </nav> <div class="wy-nav-content"> <div class="rst-content style-external-links"> <div role="navigation" aria-label="Page navigation"> <ul class="wy-breadcrumbs"> <li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li> <li class="breadcrumb-item"><a href="index.html">File sharing and management</a></li> <li class="breadcrumb-item active">Controlling file versions and aging</li> <li class="wy-breadcrumbs-aside"> <a href="https://github.com/nextcloud/documentation/edit/master/admin_manual/configuration_files/file_versioning.rst" class="fa fa-github"> Edit on GitHub</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <div itemprop="articleBody"> <section id="controlling-file-versions-and-aging"> <h1>Controlling file versions and aging<a class="headerlink" href="#controlling-file-versions-and-aging" title="Link to this heading"></a></h1> <p>The Versions app (files_versions) expires old file versions automatically to ensure that users don’t exceed their storage quotas. This is the default pattern used to delete old versions:</p> <ul class="simple"> <li><p>For the first second we keep one version</p></li> <li><p>For the first 10 seconds Nextcloud keeps one version every 2 seconds</p></li> <li><p>For the first minute Nextcloud keeps one version every 10 seconds</p></li> <li><p>For the first hour Nextcloud keeps one version every minute</p></li> <li><p>For the first 24 hours Nextcloud keeps one version every hour</p></li> <li><p>For the first 30 days Nextcloud keeps one version every day</p></li> <li><p>After the first 30 days Nextcloud keeps one version every week</p></li> </ul> <p>The versions are adjusted along this pattern every time a new version is created. Nextcloud will always keep the latest version in each of the time windows.</p> <p>The Versions app never uses more than 50% of the user’s currently available free space. If the stored versions exceed this limit, Nextcloud deletes the oldest file versions until it meets the disk space limit again.</p> <p>Nextcloud manages file versions using a combination of on-save pruning and scheduled cleanup. This ensures that versions are retained while respecting storage quotas.</p> <section id="during-version-creation"> <h2>During Version Creation<a class="headerlink" href="#during-version-creation" title="Link to this heading"></a></h2> <p>Nextcloud automatically creates new file versions whenever a file is modified, allowing users to restore previous states when needed. After each new version is stored, the system automatically checks storage limits and retention rules. Versions are filtered according to the above pattern to keep representative versions and remove redundant ones. If the user’s quota is exceeded, auto-expiry is triggered. When storage space runs low, Nextcloud sorts all versions from oldest to newest and removes the oldest ones first, while always preserving at least the two most recent versions to free up space.</p> </section> <section id="during-the-regular-background-job"> <h2>During the Regular Background Job<a class="headerlink" href="#during-the-regular-background-job" title="Link to this heading"></a></h2> <p>Nextcloud runs a background cleanup task that automatically removes old file versions for each user. During this process, the system checks the user’s version storage folder and identifies versions that are older than the configured maximum retention period or whose original files no longer exist. When an outdated or orphaned version is found, it is safely deleted from both the filesystem and the version database to reclaim storage space and maintain consistency.</p> <div class="admonition note"> <p class="admonition-title">Note</p> <p>Versions named by a user will never be deleted.</p> </div> <p>You may alter the default pattern in <code class="docutils literal notranslate"><span class="pre">config.php</span></code>. The default setting is <code class="docutils literal notranslate"><span class="pre">auto</span></code>, which sets the default pattern:</p> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">'versions_retention_obligation'</span> <span class="o">=></span> <span class="s1">'auto'</span><span class="p">,</span> </pre></div> </div> <p>Additional options are:</p> <ul class="simple"> <li><dl class="simple"> <dt><code class="docutils literal notranslate"><span class="pre">D,</span> <span class="pre">auto</span></code></dt><dd><p>Keep versions at least for D days, apply expiration rules to all versions that are older than D days</p> </dd> </dl> </li> <li><dl class="simple"> <dt><code class="docutils literal notranslate"><span class="pre">auto,</span> <span class="pre">D</span></code></dt><dd><p>Delete all versions that are older than D days automatically, delete other versions according to expiration rules</p> </dd> </dl> </li> <li><dl class="simple"> <dt><code class="docutils literal notranslate"><span class="pre">D1,</span> <span class="pre">D2</span></code></dt><dd><p>Keep versions for at least D1 days and delete when they exceed D2 days.</p> </dd> </dl> </li> <li><dl class="simple"> <dt><code class="docutils literal notranslate"><span class="pre">disabled</span></code></dt><dd><p>Disable the Versions app; no old file versions will be deleted.</p> </dd> </dl> </li> </ul> </section> <section id="background-job"> <h2>Background job<a class="headerlink" href="#background-job" title="Link to this heading"></a></h2> <p>To delete expired versions a background jobs runs every 30 minutes. It’s possible to deactivate the background job and setup a (system) cron to expire the versions via occ.</p> <p>Deactivate background job: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">config:app:set</span> <span class="pre">--value=no</span> <span class="pre">files_versions</span> <span class="pre">background_job_expire_versions</span></code></p> <p>Activate background job: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">config:app:delete</span> <span class="pre">files_versions</span> <span class="pre">background_job_expire_versions</span></code></p> <p>Expire versions: <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">versions:expire</span></code> or <code class="docutils literal notranslate"><span class="pre">occ</span> <span class="pre">versions:expire</span> <span class="pre">--quiet</span></code> (without the progress bar)</p> </section> </section> </div> </div> <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> <a href="previews_configuration.html" class="btn btn-neutral float-left" title="Previews configuration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="trashbin_configuration.html" class="btn btn-neutral float-right" title="Deleted Items (trash bin)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> </div> <hr/> <div role="contentinfo"> <p>© Copyright 2016-2026 Nextcloud GmbH and Nextcloud contributors.</p> </div> </footer> </div> </div> </section> </div> <div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions"> <span class="rst-current-version" data-toggle="rst-current-version"> ☁️ latest <span class="fa fa-caret-down"></span> </span> <div class="rst-other-versions"> <dl> <dt>☁️ Versions</dt> <dd style="width: 32%"> <a href="https://docs.nextcloud.com/server/latest/admin_manual" style="color: var(--dark-link-color);" > latest </a> </dd> <dd style="width: 32%"> <a href="https://docs.nextcloud.com/server/stable/admin_manual" > stable </a> </dd> <dd style="width: 32%"> <a href="https://docs.nextcloud.com/server/32/admin_manual" > 32 </a> </dd> <dd style="width: 32%"> <a href="https://docs.nextcloud.com/server/31/admin_manual" > 31 </a> </dd> </dl> </div> </div> <script> jQuery(function () { SphinxRtdTheme.Navigation.enable(true); }); </script> </body> </html>
Save File
Cancel