Skip to content

hcaiano/cloud-transfer

Repository files navigation

Cloud Transfer

A simple local web app to transfer folders from Dropbox to Google Drive — without downloading anything to your Mac.

Transfer UI

How It Works

This app uses rclone under the hood to stream files directly between cloud services. Your Mac acts as a relay — data flows through it but is never stored locally. This lets you move 750GB+ without needing that much disk space.

Dropbox ──(download)──→ Your Mac ──(upload)──→ Google Drive
          (streamed, not saved)

Prerequisites

  1. Node.js 18+Download
  2. rclone — Cloud sync tool

Quick Start

1. Install rclone

# macOS (Homebrew)
brew install rclone

# Or download from https://rclone.org/downloads/

2. Configure Dropbox Remote

rclone config

Follow the prompts:

  • n — New remote
  • Name: dropbox (or any name you prefer)
  • Storage: dropbox
  • Leave client_id and client_secret blank (press Enter)
  • n — No advanced config
  • y — Auto config (opens browser to authorize)

3. Configure Google Drive Remote

rclone config

Follow the prompts:

  • n — New remote
  • Name: gdrive (or any name you prefer)
  • Storage: drive
  • Leave client_id and client_secret blank
  • Choose scope: 1 (full access)
  • Leave root_folder_id blank
  • Leave service_account_file blank
  • n — No advanced config
  • y — Auto config (opens browser to authorize)

4. Verify Your Remotes

rclone listremotes
# Should show:
# dropbox:
# gdrive:

5. Run the App

# Clone/download this project, then:
cd cloud-transfer

# Install dependencies
npm install

# Start the app
npm run dev

Open http://localhost:4790 in your browser.

Usage

  1. Select Source — Choose your Dropbox remote and browse to the folder you want to transfer
  2. Select Destination — Choose your Google Drive remote and pick where files should go
  3. Click Transfer — Watch the progress in real-time
  4. Keep Mac Awake — For long transfers, prevent sleep (see below)

Important Notes

Google Drive Upload Limits

Google Drive has a 750GB per day upload limit per user. If you're transferring more than 750GB:

  • The transfer will pause when you hit the limit
  • Wait 24 hours for the limit to reset
  • Restart the transfer — already-copied files will be skipped

Keeping Your Mac Awake

For transfers that take hours/days, prevent your Mac from sleeping:

# Open a new Terminal window and run:
caffeinate -d

# This prevents display sleep. Press Ctrl+C to stop when done.

Or in System Settings → Energy Saver:

  • Set "Turn display off" to Never (temporarily)
  • Disable "Put hard disks to sleep"

Resumable Transfers

If a transfer is interrupted (network issue, Mac sleep, etc.):

  1. Just start the transfer again with the same source/destination
  2. rclone will automatically skip files that already exist in the destination
  3. Only remaining files will be transferred

Transfer Speed

Speed depends on:

  • Your internet upload/download speed
  • Dropbox and Google Drive's current performance
  • File sizes (many small files are slower than few large files)

Typical speeds: 20-100 MB/s on fast connections.

Troubleshooting

"rclone is not installed"

Make sure rclone is in your PATH:

which rclone
# Should show something like: /opt/homebrew/bin/rclone

If installed via Homebrew but not found, restart your terminal.

"You need at least 2 remotes configured"

Run rclone config to add your Dropbox and Google Drive remotes. See steps 2-3 above.

Transfer stuck or very slow

  1. Check your internet connection
  2. Try reducing parallel transfers:
    • Edit src/server/rclone.ts
    • Change --transfers 4 to --transfers 2
  3. Check for rate limiting (Google Drive sometimes throttles)

"Failed to list folders"

  • Make sure your OAuth tokens haven't expired
  • Re-run rclone config and re-authorize the remote
  • Check that you have permission to access the folder

API server not responding

Make sure both servers are running:

npm run dev
# Should show:
# 🚀 Cloud Transfer API running at http://localhost:4789
# VITE ready at http://localhost:4790

Development

# Install dependencies
npm install

# Run in development mode (hot reload)
npm run dev

# Build for production
npm run build

# Run production build
npm start

Project Structure

cloud-transfer/
├── src/
│   ├── server/
│   │   ├── index.ts      # Express API server
│   │   └── rclone.ts     # rclone process manager
│   └── client/
│       ├── App.tsx       # Main React app
│       ├── components/
│       │   ├── FolderPicker.tsx    # Folder browser
│       │   ├── TransferProgress.tsx # Progress display
│       │   └── SetupGuide.tsx      # Setup instructions
│       └── index.css     # Tailwind styles
├── package.json
└── README.md

Tech Stack

  • Backend: Node.js, Express, TypeScript
  • Frontend: React, Vite, Tailwind CSS
  • Transfer Engine: rclone

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors