wp-cloudsync-master
CloudSync Master - WordPress Media Offloading Plugin
About CloudSync Master
CloudSync Master is a WordPress plugin that offloads media files to cloud storage providers and serves them via CDN. It is purpose-built for speed and efficiency:
- Ultra-small footprint - Under 1.5 MB (10-40x smaller than competitors like WP Offload Media at 23 MB or Media Cloud at 87 MB)
- Native REST APIs - No bundled AWS/Google SDKs; uses direct HTTP calls for minimal overhead
- 10 cloud providers - S3, Cloudflare R2, Google Cloud, DigitalOcean Spaces, Backblaze B2, Wasabi, Vultr, Linode, MinIO, and any S3-compatible endpoint
- Async queue-based uploads (PRO) - Non-blocking background processing via WP-Cron with concurrent uploads
Availability
- Free version: Available on WordPress.org - 1 account, 10 providers, setup wizard, settings page (performance options disabled), immediate uploads via hooks (no queue/cron), competitor migration via admin UI, basic CLI (
status,accounts list,syncreport-only) - PRO version (requires activated license): Purchase at https://1teamsoftware.com/product/cloudsync-master-pro/ - unlimited accounts, async queue with background cron processing, objects browser, concurrent uploads (1-20 via admin UI, 1-10 via CLI), Google OAuth, WooCommerce/EDD signed URLs, image optimizer integrations, CSS/JS offloading, full CLI management (all commands), competitor migration via CLI, priority support
Installation
If CloudSync Master is not installed on the target WordPress site:
# Install and activate the free version from WordPress.org
wp plugin install wp-cloudsync-master --activate
# For PRO: download from https://1teamsoftware.com/product/cloudsync-master-pro/
# then upload and activate
wp plugin install /path/to/wp-cloudsync-master-pro.zip --activate
CLI Command Overview
All commands follow: wp cloudsync <command> [<subcommand>] [--flags]
| Command | Description | Version |
|---|---|---|
status |
Show sync status across all accounts | Free (basic) / PRO (with queue info) |
sync |
Scan media library for unsynced files | Free (report only) / PRO (queues files) |
accounts list |
List configured accounts | Free |
accounts add/update/delete/activate/test/info |
Full account management | PRO |
queue |
Manage upload queue (status/list/clear/process) | PRO |
settings |
Manage plugin settings (list/get/set/reset) | PRO |
integrations |
Manage plugin integrations (list/enable/disable/set) | PRO |
objects |
Manage synced object records (list/reupload/delete) | PRO |
license |
Manage PRO license (status/activate/deactivate) | PRO (always available, even before activation) |
config |
Show configuration sources and generate wp-config.php snippets | PRO |
migrate |
Detect and import from competitor plugins | PRO |
PRO CLI commands require the PRO plugin with an activated license. Without activation, only free commands and license (activate/deactivate/status) are available.
For the complete CLI reference with all flags and examples, read references/cli_reference.md.
Common Workflows
Initial Setup (from scratch)
# 1. Activate PRO license (always available in PRO, even before first activation)
wp cloudsync license activate XXXX-XXXX-XXXX-XXXX
# 2. Add cloud storage account
wp cloudsync accounts add \
--provider=cloudflare_r2 \
--name="Production R2" \
--bucket=my-media \
--access-key-id=$R2_ACCESS_KEY \
--secret-access-key=$R2_SECRET_KEY \
--region=auto \
--api-endpoint=https://$R2_ACCOUNT_ID.r2.cloudflarestorage.com \
--custom-domain=cdn.example.com \
--activate
# 2b. Test the connection
wp cloudsync accounts test --account=<account-id>
# 3. Configure upload behavior
wp cloudsync settings set createObjectOnFileUpload yes
wp cloudsync settings set rewriteFileUrlWithObjectUrl yes
wp cloudsync settings set uploadBatchSize 25
wp cloudsync settings set uploadConcurrency 3
# 4. Sync existing media library
wp cloudsync sync --batch-size=100
# 5. Verify
wp cloudsync status --format=json
Provider-Specific Account Setup
Cloudflare R2 (zero egress fees):
wp cloudsync accounts add \
--provider=cloudflare_r2 --name="R2 Storage" --bucket=my-bucket \
--access-key-id=KEY --secret-access-key=SECRET \
--region=auto --api-endpoint=https://ACCOUNT_ID.r2.cloudflarestorage.com \
--custom-domain=cdn.example.com --activate
wp cloudsync accounts test --account=<account-id>
AWS S3:
wp cloudsync accounts add \
--provider=s3 --name="AWS Media" --bucket=my-s3-bucket \
--access-key-id=KEY --secret-access-key=SECRET \
--region=us-east-1 --activate
wp cloudsync accounts test --account=<account-id>
Google Cloud Storage (service account):
wp cloudsync accounts add \
--provider=google --name="Google Media" --bucket=my-gcs-bucket \
--auth-type=service_account --key-file=/path/to/service-account.json \
--activate
wp cloudsync accounts test --account=<account-id>
DigitalOcean Spaces:
wp cloudsync accounts add \
--provider=digitalocean --name="DO Spaces" --bucket=my-space \
--access-key-id=KEY --secret-access-key=SECRET \
--region=nyc3 --api-endpoint=https://nyc3.digitaloceanspaces.com \
--activate
wp cloudsync accounts test --account=<account-id>
Monitoring and Health Checks
wp cloudsync status --format=json # Quick status
wp cloudsync queue status # Check queue backlog
wp cloudsync queue process # Force-process stuck queue
wp cloudsync objects list --per-page=10 # List recently synced objects
wp cloudsync license status # Verify license
Migration from Competitor Plugin
wp cloudsync migrate detect # Detect installed competitors
wp cloudsync migrate import --from=wp-offload-media # Import settings
wp cloudsync accounts test --account=<imported-id> # Verify imported account
Hardened Configuration (wp-config.php)
wp cloudsync config generate --account=<id> # Generate define() snippet
wp cloudsync config show # Show all config sources
Configuration priority: environment variables > wp-config.php constants > database.
Key Settings Reference
| Setting | Type | Default | Description |
|---|---|---|---|
createObjectOnFileUpload |
bool | no | Upload to cloud on media upload |
rewriteFileUrlWithObjectUrl |
bool | no | Replace local URLs with cloud URLs |
deleteObjectOnFileDelete |
bool | no | Delete from cloud when local file deleted |
deleteFileAfterObjectCreated |
bool | no | Remove local file after cloud upload |
createObjectsForExistingFiles |
bool | no | Queue existing media library for upload |
uploadBatchSize |
int | 10 | Files per upload batch (1-100) |
uploadConcurrency |
int | 1 | Concurrent uploads (1-10 via CLI, 1-20 via admin UI) |
enableSignedDownloads |
bool | no | Generate signed URLs for downloads |
signedUrlExpirySeconds |
int | 3600 | Signed URL lifetime in seconds (120-604800) |
fallbackToLocalOnMissingRemote |
bool | yes | Serve local file if cloud file missing |
Run wp cloudsync settings list for the complete list with min/max constraints.
Supported Providers
| Provider | ID | Auth | Notes |
|---|---|---|---|
| Amazon S3 | s3 |
Access Key + Secret | Industry standard |
| Cloudflare R2 | cloudflare_r2 |
Access Key + Secret | Zero egress fees |
| Google Cloud Storage | google |
Service Account JSON or OAuth | Enterprise-grade |
| DigitalOcean Spaces | digitalocean |
Access Key + Secret | S3-compatible |
| Backblaze B2 | backblaze |
Access Key + Secret | Cost-effective |
| Wasabi | wasabi |
Access Key + Secret | No egress fees |
| Vultr Object Storage | vultr |
Access Key + Secret | S3-compatible |
| Linode Object Storage | linode |
Access Key + Secret | S3-compatible |
| MinIO | minio |
Access Key + Secret | Self-hosted |
| Custom S3-Compatible | s3_compatible |
Access Key + Secret | Any S3 endpoint |
Supported Competitor Migrations
| Plugin | Migration ID |
|---|---|
| WP Offload Media | wp-offload-media |
| Media Cloud | media-cloud |
| Media Cloud Sync | media-cloud-sync |
| WP Stateless | wp-stateless |
Environment Variable Configuration
# S3-compatible account (individual fields)
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_S3_ACCESS_KEY_ID=key
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_S3_SECRET_ACCESS_KEY=secret
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_S3_BUCKET=my-bucket
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_S3_ENDPOINT=https://endpoint.com
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_S3_REGION=auto
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_S3_PATH_PREFIX=wp-content/uploads
# Google Cloud Storage account (individual fields)
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_GCS_SERVICE_ACCOUNT_KEY='{"type":"service_account",...}'
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_GCS_BUCKET=my-gcs-bucket
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_GCS_PATH_PREFIX=wp-content/uploads
# Full account definitions (JSON array, supports multiple accounts)
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_ACCOUNTS='[{"provider":"cloudflare_r2","bucketName":"my-bucket",...}]'
# License key
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_LICENSE_KEY=your-license-key
# Plugin settings (JSON)
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_SETTINGS='{"uploadBatchSize":25}'
# Disable UI account management (external-only mode)
ONETEAMSOFTWARE_CLOUDSYNC_MASTER_DISABLE_ACCOUNT_MANAGEMENT=true
Resources
references/
Detailed CLI reference with every command, subcommand, flag, and example:
references/cli_reference.md- Completewp cloudsyncCLI reference