| Crates.io | quick-copy |
| lib.rs | quick-copy |
| version | 0.2.0 |
| created_at | 2026-01-10 03:05:24.115669+00 |
| updated_at | 2026-01-12 04:41:55.183425+00 |
| description | Fast SSH/SCP file transfer tool with named targets and path aliases |
| homepage | |
| repository | |
| max_upload_size | |
| id | 2033365 |
| size | 93,529 |
Fast SSH/SCP file transfer tool with named targets and path aliases.
cargo install quick-copy
This installs both quick-copy and qc (short alias).
~/.config/quick-copy/config.yaml:version: 1
defaults:
user: myuser
port: 22
default_path_alias: scratch
staging_dir: "/tmp"
zip:
exclude:
- ".git/"
- "node_modules/"
hosts:
server:
host: "192.168.1.100"
paths:
scratch: "/home/myuser/scratch"
projects: "/home/myuser/projects"
nas:
host: "nas.local"
paths:
shared: "/mnt/shared"
shares:
default: "nas:shared"
layout: "{source}/{date}"
qc file model.pt server:scratch
qc dir server:projects
qc pull server:scratch
qc dump ./results
qc file report.pdf server:scratch
qc file data.csv server:/absolute/path
Copies a single file to a remote destination.
qc dir server:scratch
qc dir server:projects --name backup.zip
qc dir server:scratch --exclude "*.log" --exclude "data/"
Zips and copies the current directory. Excludes patterns from config are applied automatically.
qc pull server:scratch
qc pull server:/remote/path
qc pull server:projects --no-extract
Downloads a remote directory to your current working directory. Extracts by default.
qc dump ./results
qc dump model.pt
qc dump
Copy files to shared storage (configured in shares.default). Organizes by source hostname and date.
qc ls
Shows configured hosts and path aliases.
qc doctor
qc doctor --test server nas
Validates configuration and SSH connectivity.
server - Use host's default path aliasserver:scratch - Use named path aliasserver:/absolute/path - Use explicit pathFull configuration example:
version: 1
defaults:
user: myuser
port: 22
default_path_alias: scratch
staging_dir: "/tmp"
zip:
exclude:
- ".git/"
- "node_modules/"
- "__pycache__/"
- ".venv/"
- "*.tmp"
- ".DS_Store"
- "target/"
follow_symlinks: false
hosts:
workstation:
host: "workstation.local"
role: "development"
paths:
scratch: "/home/myuser/scratch"
projects: "/home/myuser/projects"
server:
host: "192.168.1.100"
role: "compute"
paths:
scratch: "/home/myuser/scratch"
data: "/data"
nas:
host: "nas.local"
role: "storage"
paths:
backups: "/mnt/backups"
shared: "/mnt/shared"
dumps: "/mnt/shared/quick-copy"
shares:
default: "nas:dumps"
layout: "{source}/{date}"
See config.example.yaml for a complete example.
-c, --config <path> - Custom config file-v, --verbose - Show ssh/scp commands--json - Output in JSON formatConfigure your homelab servers once, then quickly move files between machines.
Push code to remote build servers, pull results back.
Script regular dumps to shared storage with automatic organization.
Work on projects across different machines with quick directory sync.
MIT