Open Source · Apache-2.0Linux / macOS / Windows No telemetry · No paid tier

SSH transfers

fast-copy moves data over a normal SSH connection by piping a tar stream through it — the same trick admins do by hand with tar | ssh, but with dedup, progress, retries and post-copy verification on top. There is no daemon, no agent and no matching install on the far side: if the server has ssh and tar, it works. That includes Synology DSM, BusyBox NAS boxes, and servers where SFTP is disabled outright.

Because the stream bypasses SFTP's per-file round-trips, trees of many small files transfer 3–5× faster than scp/SFTP, and duplicate files are hard-linked on the destination instead of being sent twice.

SSH transfers require paramiko: pip install paramiko. When the remote server has tar available, all transfers use raw SSH channels instead of SFTP — bypassing protocol overhead and working even on servers with SFTP disabled (e.g. Synology NAS).

Examples

Local → Remote

python fast_copy.py /data user@server:/backup/data --ssh-dst-password

Remote → Local

python fast_copy.py user@server:/data /local/backup --ssh-src-password

Remote → Remote (relay through your machine)

python fast_copy.py user@src-host:/data admin@dst-host:/backup/data \
    --ssh-src-password --ssh-dst-password

Custom port and SSH key

python fast_copy.py user@host:/data /local \
    --ssh-src-port 2222 --ssh-src-key ~/.ssh/id_ed25519

Synology NAS (non-standard port, path with spaces)

python fast_copy.py /local/data "user@nas:/volume1/Shared Folder/backup" \
    --ssh-dst-port 2205 --ssh-dst-password

Host keys are verified interactively on first contact (TOFU, with MD5 + SHA-256 fingerprints) and changed keys are rejected. All SSH flags are in the options reference.