r2sync
v1.0.22
Published
Backup and upload files from/to Cloudflare R2 with concurrency, streaming, and low memory usage.
Downloads
9
Maintainers
Readme
📦 R2Sync
A CLI tool for backup and upload files from/to a Cloudflare R2 bucket with concurrency, streaming, and low memory usage.
🚀 Features
- Download or backup all files from an R2 bucket quickly with parallel processing
- Upload all files to an R2 bucket with cache-control headers
- Stream files to avoid excessive memory usage
- Controlled concurrency for optimal speed and stability
- Secure encrypted configuration stored in user’s home directory
⚙️ Installation
If you want to use the r2sync command directly from your terminal in any project directory (which is typical for a CLI utility), use the global install flag:
- Installation:
npm install -g r2sync- Run setup to configure:
r2sync setup📂 Project Structure
.
├── src/
│ ├── cli.js # CLI command handler
│ ├── setup.js # Setup wizard
│ ├── config.js # Config loader
│ ├── download-r2.js # Script to download from R2
│ ├── upload-r2.js # Script to upload to R2
├── package.json
└── README.md🛠 Usage
General Usage [Examples]
r2sync download --local ./r2/to-backup-folder
r2sync upload --local ./r2/from-upload-folderCommands:
- upload — Upload files from local to R2
- download — Download files from R2 to local
Examples:
r2sync upload
r2sync upload --local ./static/storage
r2sync upload --remote r2-folder --local ./my-local-folder
npx r2sync download
npx r2sync download --local ./static/storage
npx r2sync download --remote r2-folder --local ./my-local-folder📂 Default Local Storage
If --local is not provided, defaults to:
r2-backup/BUCKET_NAME_YYYY-MM-DD⚡ Performance
- Uses
p-limitfor controlled concurrency - Streams files for low memory usage
- Configurable concurrency speed
📦 Dependencies
@aws-sdk/client-s3fs-extramimep-limit
📝 License
ISC License
