No description
Find a file
Carl Schwan 60e4df01f1
Merge pull request #138 from nextcloud/carl/file-return-type
refactor: Add return types to S3PreviewFile
2025-10-13 13:38:41 +02:00
.github ci: update reuse.yml workflow from template 2025-06-27 10:23:25 +00:00
appinfo chore: 1.3.0 2025-09-30 14:48:43 +02:00
lib refactor: Add return types to S3PreviewFile 2025-10-08 11:27:25 +02:00
LICENSES ci(reuse): Add reuse check 2025-03-04 17:48:14 +01:00
tests docs(reuse): Add SPDX header 2025-03-04 17:43:37 +01:00
vendor-bin chore: composer update 2025-09-30 15:15:15 +02:00
.gitignore docs(reuse): Add SPDX header 2025-03-04 17:43:37 +01:00
.nextcloudignore docs(reuse): Add SPDX header 2025-03-04 17:43:37 +01:00
.php-cs-fixer.dist.php ci(reuse): Add reuse check 2025-03-04 17:48:14 +01:00
AUTHORS.md docs(reuse): Add SPDX header 2025-03-04 17:43:37 +01:00
CHANGELOG.md docs(reuse): Add SPDX header 2025-03-04 17:43:37 +01:00
composer.json chore: move to vendor-bin 2025-03-04 16:53:38 +01:00
composer.lock chore: composer update 2025-09-30 15:15:15 +02:00
krankerl.toml docs(reuse): Add SPDX header 2025-03-04 17:43:37 +01:00
LICENSE readme and license 2019-06-14 17:30:41 +02:00
psalm-baseline.xml refactor: Add return types to S3PreviewFile 2025-10-08 11:27:25 +02:00
psalm.xml refactor: Add return types to S3PreviewFile 2025-10-08 11:27:25 +02:00
README.md docs(readme): Add reuse status badge 2025-03-04 17:43:56 +01:00
REUSE.toml refactor: Add return types to S3PreviewFile 2025-10-08 11:27:25 +02:00

files_versions_s3

REUSE status

Use S3 object versioning for file versioning

Warning

This app does not include any mechanism for expiring old s3 versions, you should setup your own version expiry (also called "Lifecycle management" in S3) to prevent versions from taking up an ever increasing amount of space.

Nextcloud builtin versioning

Note that the default versioning app for Nextcloud will still work with S3 object storage without enabling this app. The default Nextcloud versioning will create new objects for every versioning instead of multiple versions for the same object.

Enabling this app should improve performance when creating new versions of large files and the integration with S3 native lifecycle management might be a desired feature, but comes with the downsides as described above.

Limitations with renaming/moving files when using external storage

Due to limitations in how versions are stored in S3, when using versioning on an S3 external storage, old versions will be lost when a file is moved or renamed. This issue does not occur when using S3 as primary storage.

Usage

  • install the app
  • check if bucket versioning is enabled for your storage using occ files_versions_s3:status
  • enable bucket versioning if not yet enabled using occ files_versions_s3:enable <id>. Where <id> is the integer of the storage item from occ files_versions_s3:status that you want to enable versioning on.