
Waiting for a 500 MB asset folder to arrive as an email attachment defeats the purpose of working on a remote Mac. SSH-based tools — scp, rsync, and SFTP — are already installed on macOS, Linux, and Windows (via WSL or a dedicated client), and they move gigabytes reliably over a single TCP connection. This guide shows when to use each, lands on a worked speed-and-cost example for a repeated 500 MB sync, and finishes with integrity checks.
scp, rsync, and SFTP all need an SSH listener on the remote Mac. Figment's $29/month virtual Intel macOS environment is accessed through the browser console; you can run shell commands and outbound transfers from its desktop terminal, but inbound SSH on port 22 is not currently exposed, so a laptop running scp user@vm:... cannot connect directly. If you need inbound SSH for bidirectional transfers, the physical offers — i3 Mac from $49/month and M-series Mac from $95/month — are configured per request; confirm SSH exposure and port in the quote. Start that request at /mac-hosting/start; the full lineup is at /mac-hosting.
Specific M4 chip, RAM, and disk at the $95 entry point are confirmed in the quote, not fixed on this page. For a direct equivalent-hardware comparison, CloudMac publishes an M4 / 16 GB / 256 GB plan at $99.99/month and $999/year; its 256 GB row is marked "Reserve now" while 512 GB and 1 TB are "Fully reserved." MacStadium's smallest listed tier is M2.S at $109/month (8 GB / 256 GB) per macstadium.com/pricing, with support and a 99.99% uptime claim included. Price alone is one axis; the Figment managed tiers ($249 Managed Build Mac and $999 Managed Mac Team) bundle CI setup, backups, monitoring, and monthly support hours that the self-serve tiers above do not.
| Method | Best for | Incremental | GUI |
|---|---|---|---|
scp | Single files or one-time directory copy | No | No |
rsync | Large folders, repeated syncs, bandwidth-sensitive | Yes | No |
| Finder / WinSCP (SFTP) | Exploratory browsing, drag-and-drop | No | Yes |
Reach for scp when the path is known and the copy happens once. Reach for rsync when the folder is large, the sync repeats (growing assets during a build), or bandwidth is constrained — after the first run, rsync moves only changed blocks. Use SFTP in Finder or WinSCP when you want to click around the remote filesystem.
scp uses SSH for transport and respects ~/.ssh/config, so an existing key and host alias work immediately. Capital -P sets the port (lowercase -p preserves timestamps — a frequent confusion). All flags are documented in the OpenBSD scp(1) manual, which also notes that since OpenSSH 9.0 scp uses the SFTP subsystem by default.
# Upload a single file to the rental Mac's Desktop
scp -i ~/.ssh/mac_rental ./build.zip user@rental-host:~/Desktop/
# Upload a directory recursively with compression
scp -r -C -i ~/.ssh/mac_rental ./assets/ user@rental-host:~/Projects/assets/
# Download a build output directory from the rental Mac
scp -r -i ~/.ssh/mac_rental user@rental-host:~/build/output/ ./local-output/
# Non-standard SSH port
scp -P 2222 -i ~/.ssh/mac_rental ./config.plist user@rental-host:~/Library/Preferences/
Quote remote paths that contain spaces:
scp -i ~/.ssh/mac_rental user@rental-host:"~/My Project/Assets/" ./local-assets/
Leave -O (legacy SCP protocol) off unless the server requires it; the default SFTP mode handles special characters more safely.
rsync compares source and destination and transfers only the differing blocks. For a 500 MB folder where most files are unchanged, the second run moves kilobytes.
# Upload: sync local assets folder to rental Mac
rsync -avz --progress \
-e "ssh -i ~/.ssh/mac_rental" \
./assets/ \
user@rental-host:~/Projects/assets/
# Download: pull build output to local
rsync -avz --progress \
-e "ssh -i ~/.ssh/mac_rental" \
user@rental-host:~/build/output/ \
./local-output/
# Mirror: delete files on remote that no longer exist locally
rsync -avz --delete \
-e "ssh -i ~/.ssh/mac_rental" \
./src/ \
user@rental-host:~/Projects/src/
Flag meanings: -a archive (permissions, timestamps, symlinks), -v verbose, -z compress in transit, --progress per-file progress, --delete removes files missing from the source — use carefully.
Windows users can run these inside WSL 2 or Cygwin. The trailing slashes on ./assets/ vs ./assets matter: the former copies the folder's contents, the latter copies the folder itself.
macOS Finder can mount a remote Mac over SFTP so files move by drag-and-drop. Apple's Connect to Server guide documents the Go → Connect to Server path and favorites; the keyboard shortcut is Cmd-K, and macOS accepts an sftp:// URL in that dialog.
sftp://user@rental-host.The connection runs over SSH, so the same key pair used by scp works. On Windows:
Both offer split-pane drag-and-drop with a progress bar, which is practical for a 500 MB bundle.
Suppose a game team re-uploads a 500 MB SpriteAssets/ folder to a rented Mac every workday. On the first upload, rsync transfers close to the full 500 MB. On a typical day, perhaps 20 MB of sprites change. Over a 20-workday month:
Compared to scp -r of the full folder every day (20 × 500 MB = 10,000 MB), rsync cuts outbound bandwidth by roughly 91%. If the remote Mac is a $95/month M-series rental, the sync overhead is a few minutes a day; if you add CI backups and monitoring, the $249/month Managed Build Mac handles the orchestration without the team scripting it.
# ── 1. Upload a single file ──────────────────────────────────────
scp -i ~/.ssh/mac_rental ./release-1.2.ipa user@rental-host:~/Desktop/
# ── 2. Upload a directory recursively with compression ───────────
scp -r -C -i ~/.ssh/mac_rental ./DesignAssets/ user@rental-host:~/Projects/DesignAssets/
# ── 3. Download Xcode archives ───────────────────────────────────
scp -r -i ~/.ssh/mac_rental user@rental-host:~/Library/Developer/Xcode/Archives/ ./Archives/
# ── 4. Incremental sync (only changed bytes transferred) ─────────
rsync -avz --progress \
-e "ssh -i ~/.ssh/mac_rental" \
./SpriteAssets/ \
user@rental-host:~/Projects/SpriteAssets/
# ── 5. Mount as SFTP volume in Finder (local macOS → remote Mac) ─
# Press Cmd-K, then enter:
# sftp://user@rental-host
After a large transfer, confirm the files arrived intact. macOS and Linux both ship md5 and shasum.
# Single-file check (run on each side, compare output)
md5 ./DesignAssets.zip
# Directory check with SHA-256
find ./DesignAssets -type f | sort | xargs shasum -a 256 > local-checksums.txt
# Then on the remote Mac, run the same command, scp the file back, and diff:
diff local-checksums.txt remote-checksums.txt
If a mismatch appears after rsync, re-run with --checksum to compare contents rather than size/mtime:
rsync -avz --checksum -e "ssh -i ~/.ssh/mac_rental" \
./DesignAssets/ user@rental-host:~/Projects/DesignAssets/
Compression. scp -C and rsync -z apply zlib before transmission. It helps text, source, and uncompressed images; it rarely helps ZIP, JPEG, or MP4 and can slow those down when CPU time exceeds the bytes saved. Measure on your actual payload.
Cipher choice. On modern CPUs, aes128-gcm@openssh.com and chacha20-poly1305@openssh.com are faster than AES-256 CBC variants:
scp -c aes128-gcm@openssh.com -r ./LargeAssets/ user@rental-host:~/Projects/
Parallelism. rsync is single-threaded per session. For independent folders, run processes side by side to saturate the link:
rsync -avz -e "ssh -i ~/.ssh/mac_rental" ./Assets/Audio/ user@rental-host:~/Assets/Audio/ &
rsync -avz -e "ssh -i ~/.ssh/mac_rental" ./Assets/Video/ user@rental-host:~/Assets/Video/ &
wait
Request a physical Mac rental with SSH exposed at /mac-hosting/start.
Related guides: