{"id":282041,"date":"2026-03-13T08:38:18","date_gmt":"2026-03-13T08:38:18","guid":{"rendered":"https:\/\/de.wordpress.org\/plugins\/luzid-backup-to-nextcloud\/"},"modified":"2026-03-17T15:15:00","modified_gmt":"2026-03-17T15:15:00","slug":"luzid-backup-to-nextcloud","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/luzid-backup-to-nextcloud\/","author":23440701,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.3.0","stable_tag":"1.3.0","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Luzid Backup to Nextcloud","header_author":"Luzid Media","header_description":"Upload WordPress backup files to Nextcloud via WebDAV with rotation and retention management","assets_banners_color":"dfe2e5","last_updated":"2026-03-17 15:15:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":20,"downloads":347,"num_ratings":0,"support_threads":2,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.10":{"tag":"1.2.10","author":"luzidmedia","date":"2026-03-13 09:42:25"},"1.2.9":{"tag":"1.2.9","author":"luzidmedia","date":"2026-03-13 08:38:25"},"1.3.0":{"tag":"1.3.0","author":"luzidmedia","date":"2026-03-17 15:15:00"}},"upgrade_notice":{"1.3.0":"<p>Streaming uploads for large files, improved UI with context-aware buttons, password field improvements. Recommended update for all users.<\/p>","1.2.9":"<p>WordPress.org review compliance. Required for plugin directory submission.<\/p>"},"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3481804,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500-de_DE.jpg":{"filename":"banner-1544x500-de_DE.jpg","revision":3481804,"resolution":"1544x500","location":"assets","locale":"de_DE"},"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3481804,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250-de_DE.jpg":{"filename":"banner-772x250-de_DE.jpg","revision":3481804,"resolution":"772x250","location":"assets","locale":"de_DE"},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3481804,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.10","1.2.9","1.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3481804,"resolution":"1","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3481804,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3481804,"resolution":"3","location":"assets","locale":""}},"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[151,4567,178125,4454,16712],"plugin_category":[59],"plugin_contributors":[255410],"plugin_business_model":[],"class_list":["post-282041","plugin","type-plugin","status-publish","hentry","plugin_tags-backup","plugin_tags-cron","plugin_tags-nextcloud","plugin_tags-rotation","plugin_tags-webdav","plugin_category-utilities-and-tools","plugin_contributors-luzidmedia","plugin_committers-luzidmedia"],"banners":{"banner":"https:\/\/ps.w.org\/luzid-backup-to-nextcloud\/assets\/banner-772x250.jpg?rev=3481804","banner_2x":"https:\/\/ps.w.org\/luzid-backup-to-nextcloud\/assets\/banner-1544x500.jpg?rev=3481804","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/luzid-backup-to-nextcloud\/assets\/icon.svg?rev=3481804","icon":"https:\/\/ps.w.org\/luzid-backup-to-nextcloud\/assets\/icon.svg?rev=3481804","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/luzid-backup-to-nextcloud\/assets\/screenshot-1.jpg?rev=3481804","caption":""},{"src":"https:\/\/ps.w.org\/luzid-backup-to-nextcloud\/assets\/screenshot-2.jpg?rev=3481804","caption":""},{"src":"https:\/\/ps.w.org\/luzid-backup-to-nextcloud\/assets\/screenshot-3.jpg?rev=3481804","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>Luzid Backup to Nextcloud<\/strong> uploads your existing WordPress backup files to a Nextcloud folder via WebDAV.<\/p>\n\n<p>It is designed for two main workflows:<\/p>\n\n<ol>\n<li><strong>Automate offsite copies<\/strong>: upload backup archives on a schedule (WordPress Cron).<\/li>\n<li><strong>Manual runs + monitoring<\/strong>: start uploads manually and follow progress + logs.<\/li>\n<\/ol>\n\n<p>Typical use cases:<\/p>\n\n<ul>\n<li>Keep an offsite copy of backup archives generated by popular backup plugins.<\/li>\n<li>Upload backups to a structured Nextcloud folder (per source, per domain).<\/li>\n<li>Reduce storage usage with optional rotation (keep only the last N backup sets per source).<\/li>\n<\/ul>\n\n<p>Core concepts:<\/p>\n\n<ul>\n<li><strong>Sources<\/strong> \u2013 each source represents a folder where backup files are created (UpdraftPlus, BackWPup, WPvivid, All-in-One WP Migration, Duplicator, or custom).<\/li>\n<li><strong>Upload<\/strong> \u2013 the plugin scans sources for backup files and uploads them to Nextcloud via WebDAV PUT.<\/li>\n<li><strong>Streaming<\/strong> \u2013 files larger than 2 MB are uploaded via cURL streaming (reads from disk, never loads the entire file into RAM). This prevents memory and timeout issues on shared hosting.<\/li>\n<li><strong>Schedule<\/strong> \u2013 optional daily\/weekly\/monthly runs at a fixed time (WordPress Cron; traffic-dependent).<\/li>\n<li><strong>Rotation<\/strong> \u2013 keep the newest N backup sets and remove older ones on Nextcloud.<\/li>\n<li><strong>Email Reporting<\/strong> \u2013 get notified on successful or failed transfers.<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Nextcloud WebDAV connection with one-click Save &amp; Test<\/li>\n<li>Password field with visibility toggle and browser autofill protection<\/li>\n<li>Multiple backup sources (known plugins + custom folders)<\/li>\n<li>File filters by extension<\/li>\n<li>Streaming uploads for large files (low RAM usage)<\/li>\n<li>Manual upload with progress modal<\/li>\n<li>Scheduled runs: Daily, Weekly, or Monthly (WordPress Cron)<\/li>\n<li>Email notifications for successful\/failed transfers<\/li>\n<li>Log viewer with clear function<\/li>\n<li>Rotation \/ retention (keep last N backup sets)<\/li>\n<li>Context-aware action buttons per tab<\/li>\n<li>German and English admin UI with integrated How-To guide<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<h4>1. Setup (connection)<\/h4>\n\n<ol>\n<li>Fill in WebDAV URL, username, app password, and remote folder.<\/li>\n<li>Click <strong>Save &amp; Test<\/strong> \u2013 this saves settings and tests the connection in one step.<\/li>\n<\/ol>\n\n<h4>2. Backup Sources<\/h4>\n\n<ol>\n<li>Switch to the <strong>Backup Sources<\/strong> tab.<\/li>\n<li>Enable one or more sources (paths and extensions are pre-filled).<\/li>\n<li>Click <strong>Save Settings<\/strong>.<\/li>\n<\/ol>\n\n<h4>3. Manual Upload<\/h4>\n\n<ol>\n<li>Click <strong>Start Manual Upload<\/strong> (available once a source is enabled).<\/li>\n<li>A progress modal shows the upload status.<\/li>\n<\/ol>\n\n<h4>4. Schedule + Rotation<\/h4>\n\n<ul>\n<li>Enable the schedule, choose frequency and time, then save.<\/li>\n<li>Enable rotation and choose how many backup sets to keep.<\/li>\n<\/ul>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the <strong>GNU General Public License v2.0 or later<\/strong>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via the WordPress Plugins screen.<\/li>\n<li>Activate <strong>Luzid Backup to Nextcloud<\/strong>.<\/li>\n<li>Go to <strong>WP Admin \u2192 Luzid WP Tools \u2192 Backup to Nextcloud<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20create%20backups%3F\"><h3>Does this plugin create backups?<\/h3><\/dt>\n<dd><p>No. It uploads backup archives created by other tools. Configure your backup plugin first.<\/p><\/dd>\n<dt id=\"why%20does%20the%20schedule%20not%20run%20exactly%20on%20time%3F\"><h3>Why does the schedule not run exactly on time?<\/h3><\/dt>\n<dd><p>WordPress Cron is traffic-based. If the site has no visits around the scheduled time, the run may be delayed.<\/p><\/dd>\n<dt id=\"should%20i%20use%20a%20normal%20password%20or%20an%20app%20password%3F\"><h3>Should I use a normal password or an app password?<\/h3><\/dt>\n<dd><p>Always use a Nextcloud <strong>App Password<\/strong> (Settings \u2192 Security \u2192 Devices &amp; Sessions).<\/p><\/dd>\n<dt id=\"my%20upload%20gets%20stuck%20on%20large%20files\"><h3>My upload gets stuck on large files<\/h3><\/dt>\n<dd><p>The plugin streams files larger than 2 MB via cURL to avoid PHP memory limits. If uploads still time out, check your hosting provider's PHP <code>max_execution_time<\/code> setting.<\/p><\/dd>\n<dt id=\"the%20password%20field%20is%20filled%20with%20the%20wrong%20password\"><h3>The password field is filled with the wrong password<\/h3><\/dt>\n<dd><p>Click the eye icon next to the password field to reveal and verify the content. The field uses <code>autocomplete=\"new-password\"<\/code> to prevent browser autofill, but some browsers may still fill it. Clear the field and enter your Nextcloud app password manually.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li><strong>Streaming uploads<\/strong>: Files &gt; 2 MB are now uploaded via cURL streaming (reads from disk, never loads entire file into RAM). Solves timeout and memory issues on shared hosting with large backup files.<\/li>\n<li><strong>Context-aware buttons<\/strong>: Each tab shows only the relevant action buttons. Setup shows only \"Save &amp; Test\"; Backup Sources and Schedule show \"Save Settings\"; How-To hides all buttons.<\/li>\n<li><strong>Upload button gating<\/strong>: \"Start Manual Upload\" is disabled (greyed out) until at least one backup source is enabled.<\/li>\n<li><strong>Password field improvements<\/strong>: Visibility toggle (eye icon), <code>autocomplete=\"new-password\"<\/code> to prevent browser autofill, renamed form field name to avoid browser recognition.<\/li>\n<li><strong>Removed \"Remove password\" checkbox<\/strong>: Passwords are now simply replaced by entering a new one.<\/li>\n<li><strong>Default source paths<\/strong>: Backup source paths and file extensions always fall back to sensible defaults (even after reset). Empty fields are never saved \u2013 defaults are restored automatically.<\/li>\n<li><strong>\"Delete All Settings\" preserves defaults<\/strong>: Resetting the plugin now keeps default source paths and extensions intact, only clears user configuration, logs, and schedule.<\/li>\n<li><strong>Guided setup flow<\/strong>: New hint text on Setup tab guides users through the configuration process.<\/li>\n<li><strong>Updated How-To guides<\/strong>: German and English documentation rewritten to match current UI and features.<\/li>\n<li><strong>Fixed<\/strong>: <code>$log<\/code> \/ <code>$source<\/code> \/ <code>$s<\/code> variable reference bugs from prefix renaming.<\/li>\n<li><strong>Fixed<\/strong>: Sources tab fields (path, extensions) now save correctly.<\/li>\n<\/ul>\n\n<h4>1.2.9<\/h4>\n\n<ul>\n<li><strong>WordPress.org Review Compliance<\/strong> \u2013 all review team requirements addressed<\/li>\n<li>Fixed: Removed invalid Author URI (luzid.app)<\/li>\n<li>Fixed: Contributors changed from \"luzid\" to \"luzidmedia\"<\/li>\n<li>Fixed: Replaced <code>WP_CONTENT_DIR<\/code> constant with <code>wp_normalize_path( dirname() )<\/code><\/li>\n<li>Fixed: Explicit field extraction from <code>$_POST<\/code> instead of processing the whole stack<\/li>\n<li>Fixed: JS object name <code>luzidBackup<\/code> renamed to <code>luzid_backup_data<\/code> (prefixed)<\/li>\n<li>Fixed: All global variables in admin-page.php prefixed with <code>luzid_btn_<\/code><\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Settings now save correctly on first install<\/li>\n<li>WebDAV credentials persist after \"Save &amp; Test\"<\/li>\n<li>Better fallback handling for tab detection<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Replaced cURL with wp_remote_request() for WordPress compliance<\/li>\n<li>All PHPCS warnings resolved<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>All date() replaced with gmdate()<\/li>\n<li>All wp_redirect() replaced with wp_safe_redirect()<\/li>\n<li>Proper wp_unslash() + sanitize everywhere<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Initial public release with full feature set<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Beta release<\/li>\n<\/ul>","raw_excerpt":"Upload WordPress backup files to Nextcloud via WebDAV, with optional rotation and retention management.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/282041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=282041"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/luzidmedia"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=282041"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=282041"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=282041"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=282041"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=282041"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=282041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}