konradmichalik / typo3-file-sync
File Sync - Synchronizes missing files between TYPO3 instances using configurable resource handlers.
Package info
github.com/konradmichalik/typo3-file-sync
Type:typo3-cms-extension
pkg:composer/konradmichalik/typo3-file-sync
Requires
- php: ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0
- ext-gd: *
- doctrine/dbal: ^4.4.4
- guzzlehttp/guzzle: ^7.15.2
- psr/http-message: ^1.0 || ^2.0
- psr/log: ^3.0.2
- symfony/console: ^7.4.14 || ^8.1.1
- typo3/cms-backend: ^13.4 || ^14.0
- typo3/cms-core: ^13.4 || ^14.0
Requires (Dev)
- eliashaeussler/version-bumper: ^2.4 || ^3.0 || ^4.0
- konradmichalik/ttt: ^0.4.0
- phpunit/phpcov: ^9.0 || ^10.0 || ^11.0 || ^13.0
- phpunit/phpunit: ^10.2 || ^11.0 || ^12.0 || ^13.0
- typo3/cms-filelist: ^13.4 || ^14.0
- typo3/cms-fluid: ^13.4 || ^14.0
- typo3/cms-frontend: ^13.4 || ^14.0
- typo3/testing-framework: ^9.5 || ^10.0
Suggests
- typo3/cms-filelist: Show sync status badge in Filelist module
Provides
None
Conflicts
Replaces
None
- dev-main
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-test/full-test-coverage
- dev-docs/split-readme-into-docs-pages
- dev-feat/srcset-support
- dev-fix/stage-remote-shadowed-landing-page
- dev-feat/shimmer-onto-main
- dev-feature/deferred-image-loading
- dev-fix/placeholder-cache-suffix
- dev-feature/deferred-image-shimmer
- dev-feature/preview-images
- dev-chore/bump-reusable-workflows-0.1.0
- dev-chore/pin-reusable-workflows-0.0.1
- dev-fix/unpin-rector-pin
- dev-test/raise-unit-test-coverage
- dev-chore/update-ddev-typo3-multi-version-addon
- dev-docs/clarify-filefill-differences
- dev-docs/fix-coverage-badge
- dev-feature/remote-instance-closed-response-body
- dev-fix/flex-ds-array-format
- dev-fix/remote-instance-resource-sink-premature-close
- dev-feature/ttt-integration
- dev-docs/readme-badges-and-license
- dev-chore/remove-unused-dependencies
- dev-docs/env-placeholder-security-note
- dev-feature/raise-test-coverage
- dev-fix/remote-instance-timeout-tests-sink-option
- dev-docs/fix-handler-interface-description
- dev-fix/ajax-endpoint-authorization
- dev-fix/negative-fetch-cache
- dev-fix/placeholder-color-validation
- dev-fix/placeholder-dimension-cap
- dev-fix/remote-instance-timeouts
- dev-perf/stream-remote-downloads
- dev-perf/sys-file-identifier-index
- dev-refactor/placeholder-gd-output-return
- dev-chore/static-typo3-support-badges
- dev-fix/phpstan-ob-get-clean-dead-code
- dev-chore/ci-security-hardening
- dev-fix/tca-flex-ds-v14-migration
- dev-docs/update-security-policy
- dev-feature/update-extension-icon
- dev-update-cgl-tools
- dev-test-matrix-typo3-14.3
- dev-fix-php-version-constraint
- dev-fix/reduce-unconfigured-storage-log-level
- dev-fix/sync-processed-files
This package is auto-updated.
Last update: 2026-09-23 14:14:05 UTC
README
TYPO3 extension typo3_file_sync
A lightweight TYPO3 extension that synchronizes missing files on demand: either by fetching them from a remote instance or by generating local placeholder images.
Tip
Typical use case: staging systems or local development environments that get refreshed from production on a regular basis (e.g. via a database sync) without copying the full file storage. Missing files are fetched (or replaced with a placeholder) the moment they're actually requested, instead of shipping every asset on each refresh.
✨ Features
- Remote instance fetching: pull missing files from a remote TYPO3 instance on demand
- Placeholder image generation: generate local placeholder images (GD and SVG) when no remote instance is configured or reachable
- CLI commands: reset missing-file flags or delete previously synced files
- Deferred image loading (experimental): render a placeholder immediately and swap in the real file after page load, with an optional blurred preview stage
- Custom resource handlers: implement your own remote source
🔥 Installation
Requirements
- TYPO3 13.4 LTS or 14.3 LTS
- PHP 8.2 to 8.5
- PHP extension
ext-gd(for placeholder and preview image generation; previews additionally need a GD build with WebP support)
Composer
composer require konradmichalik/typo3-file-sync
TER
Download the zip file from TYPO3 extension repository (TER).
Setup
vendor/bin/typo3 extension:setup --extension=typo3_file_sync
Upgrading
Run the same command after every update, or use the database analyser in the Install Tool. This release adds the column tx_typo3_file_sync_failed to sys_file, and deferred image loading needs it: between composer update and the schema update every materialize request fails with a database error and answers 500, so every deferred image stays a grey placeholder.
🚀 Quick start
Configure a storage in ext_localconf.php (or additional.php) to fetch missing files from a remote instance:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['typo3_file_sync']['storages'][1] = [ [ 'identifier' => 'remote_instance', 'configuration' => 'https://production.example.com', ], ];
The array key (1) is the UID of the file storage. See Configuration for the backend UI alternative, chaining handlers, and the full option set.
📚 Documentation
| Page | What's inside |
|---|---|
| Configuration | Backend UI setup, the full PHP option set, and chaining handlers |
| Resource handlers | The built-in Remote Instance and Placeholder Image handlers, Basic Auth, and timeouts |
| CLI commands | Resetting missing-file flags and deleting synced files |
| Deferred image loading | The experimental three-stage pipeline, preview image generation internals, known limitations, and database-sync behavior |
| Custom resource handlers | Implementing RemoteResourceInterface and the optional batch-fetch extension point |
💎 Credits
This project is inspired by the great filefill extension. File Sync targets TYPO3 13.4 LTS and 14.0+, generates placeholder images (GD and SVG) fully locally without relying on an external service like Placehold.co, and adds CLI commands for resetting and deleting synced files.
🧑💻 Contributing
Please have a look at CONTRIBUTING.md.
⭐ License
This project is licensed under GNU General Public License 2.0 (or later).