Duplicator by flydev 👊🏻

Duplicate, backup and transfer an entire site from one location to another.


  • The readme is being re-written.

Duplicator will create a ZIP archive called package bundled with a full database backup and all your files. This package is stored on local disk or in the cloud and can be used to restore your site. You can use Duplicator to duplicate and deploy/restore your site on a new host. It can be used as backup utility.

  1. Download the module from the directory or Github
  2. Drop the module files in /site/modules/Duplicator/
  3. In your admin, click Modules > Refresh
  4. Click "install" for "Duplicator"
  5. Go to Setup > Duplicator and build your package!

You can skip these instructions if you plan to only use the built-in features Local Folder or FTP/FTPS.

If you want to use GoogleDrive or AmazonS3, you have two choices of type of installation. Using Composer or downloading directly a ZIP archive from the repository.

Installing all SDK are not required, you can choose the one you need.

  • Dropbox dropped support for the version 1 of the API since september 2017 - api-v1-deprecation-timeline - so I removed it from Duplicator until I got the time to code an interface for the API v2
  • GoogleDrive tested the 2023-03-20 successfully
  • AmazonS3 tested the 2017-12-03 todo

In the root directory of your ProcessWire installation, just type in a terminal :

  • composer require google/apiclient
  • composer require aws/aws-sdk-php

After downloading the archive, open it, you will find a folder called SDKs under each provider named directory. Extract or Upload this folder in the Duplicator module folder. If the folder already exist, merge it. Example: /www/public_html/site/modules/Duplicator/SDKs

Download it from the Duplicator-SDKs repository.

Now you can refresh the Duplicator's settings page, the corresponding checkbox will be enabled.

Permission set is duplicator. User with this permission can initiate a backup, download or sync a package. The module's settings is only accessible to superuser.

  • Encryption use libsodium 1.0.18 through Halite 5.0.x or 5.1 and newer
  • Version of PHP supported: PHP >= v8.x Note: performance on PHP 8.0.x is poor. You must consider using PHP 8.1.x for better performance.

Use vcpkg to install libsodium: a. ``cd vcpkg b. .\bootstrap-vcpkg.bat c. `vcpkg install libsodium`

You can find pre-built libraries there: https://download.libsodium.org/libsodium/releases/

Run on terminal: sudo apt-get install php8.1-sodium

Once all prequisites installed, insatll Halite by running composer in the root directory: composer require paragonie/halite:^5

Actually you have 3 choices to setup a cron job.

To edit a crontab through the command line, type: cronjob -e then add for example the following line to build a package once a day :

4 0 * * * php /www/mysite/wwwroot/site/modules/Duplicator/cron.php >/dev/null 2>&1

You can rely on PwCron to setup the job.

4 0 * * * php /www/mysite/wwwroot/site/modules/PwCron/cron.php >/dev/null 2>&1

Because it's triggered by a pageview, this choice can slowdown your site - LazyCron documentation

Please look at this answer on stackoverflow to set up it: http://stackoverflow.com/questions/7195503/setting-up-a-cron-job-in-windows

If you are running CRON via a panel, please rely on the documentation of your hosting provider. Do not hesitate to ping on the support forum thread.

If this the case, you can rely on LazyCron module.

Every 1 minute*/1 * * * *
Every 15 minutes*/15 * * * *
Every 30 minutes*/30 * * * *
Every 1 hour0 * * * *
Every 6 hours0 */6 * * *
Every 12 hours0 */12 * * *
Once a day4 0 * * *
Once a week4 0 * * 0
Once a month4 0 1 * *

Obtain credentials there: https://console.developers.google.com/apis/credentials

A tutorial is available on the forum : Duplicator Dev Thread

Obtain credentials there: https://console.aws.amazon.com/iam/home

A bucket name should conform with DNS requirements:

  • Should not contain uppercase characters
  • Should not contain underscores (_)
  • Should be between 3 and 63 characters long
  • Should not end with a dash
  • Cannot contain two, adjacent periods
  • Cannot contain dashes next to periods (e.g., "my-.bucket.com" and "my.-bucket" are invalid)

Timeout usually happen if you are on a low-end budget host with limitations. The easiest way to solve this issue, is to use directory filters on some of your larger directories like your files, vendor, or even bower_components directory to get the size down. Then reinstall the package at the new location and then FTP all the files over that you filtered.

Hosting Provider Issue List:

  • 1and1 Shared hosting (resolved by using Filters)
  • Dreamhost hosting (resolved using the Archive Flush option); Need to be tested again.
  • Duplicator's logo made by @szabeszg
  • The processwire community �

Install and use modules at your own risk. Always have a site and database backup before installing new modules.

Latest news

  • ProcessWire Weekly #490
    In the 490th issue of ProcessWire Weekly we'll check out what's new in the latest core version ProcessWire 3.0.229, introduce a brand-new third party module, and more. Read on!
    Weekly.pw / 30 September 2023
  • ProcessWire 3.0.226 new main/master version
    After 8 months in development we are excited to bring you ProcessWire 3.0.226 main/master. This version has a ton of great new features, improvements and optimizations, plus more than 100 issue fixes. This post takes an in-depth look at highlights from this great new version.
    Blog / 25 August 2023
  • Subscribe to weekly ProcessWire news

“Indeed, if ProcessWire can be considered as a CMS in its own right, it also offers all the advantages of a CMF (Content Management Framework). Unlike other solutions, the programmer is not forced to follow the proposed model and can integrate his/her ways of doing things.” —Guy Verville, Spiria Digital Inc.