Crates.io | qcp |
lib.rs | qcp |
version | 0.1.3 |
source | src |
created_at | 2024-10-25 23:29:39.635501 |
updated_at | 2024-11-27 09:40:58.294215 |
description | Secure remote file copy utility which uses the QUIC protocol over UDP |
homepage | https://github.com/crazyscot/qcp/ |
repository | https://github.com/crazyscot/qcp/ |
max_upload_size | |
id | 1423390 |
size | 262,205 |
The QUIC Copier (qcp
) is an experimental
high-performance remote file copy utility for long-distance internet connections.
scp
scp
, using existing, well-known mechanismsqcp
binary on both machines. It needs to be in your PATH
on the remote machine.qcp --help-buffers
and follow its instructions.These can be found on the latest release.
The binaries are statically linked. Linux builds should work on all recent distributions, as long as you have selected the correct CPU architecture.
Prerequisite: You need to have capnpc
installed. Your distribution likely packages this, or see https://capnproto.org/.
You can install the package from source using cargo
:
cargo install --locked qcp
rustup
tool via your package manager, or see Rust installationrustup toolchain install stable
The basic syntax is the same as scp or rcp.
qcp [OPTIONS] <SOURCE> <DESTINATION>
The program has a comprehensive help message, accessed via qcp -h
(brief) or qcp --help
(long form).
For example:
$ qcp my-server:/tmp/testfile /tmp/
⠂ Transferring data 2.1MB/s (last 1s)
testfile ████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░ 1s @ 6.71 MB/s [10.49 MB]
The program uses the ssh binary on your system to connect to the target machine. ssh will check the remote host key and prompt you for a password or passphrase in the usual way.
By default qcp is tuned for a 100Mbit connection, with 300ms round-trip time to the target server.
Various network tuning options are available.
For example, if you have 300Mbit/s (37.5MB/s) download and 100Mbit/s (12.5MB/s) upload, you might use these options:
qcp my-server:/tmp/testfile /tmp/ --rx 37M --tx 12M
Performance tuning can be a tricky subject. See the performance documentation.
The brief version:
qcp --server
thereThe protocol documentation contains more detail and a discussion of its security properties.
The initial release is made under the GNU Affero General Public License.
Feel free to report bugs via the bug tracker.
I'd particularly welcome performance reports from BSD/OSX users as that's not a platform I use regularly.
While suggestions and feature requests are welcome, please be aware that I mostly work on this project in my own time.
If you find this software useful and would like to say thank you, please consider buying me a coffee or ko-fi. Github sponsorship is also available.
If you're a business and need a formal invoice for your accountant, my freelancing company can issue the paperwork.
For this, and any other commercial enquiries (alternative licensing, support, etc) please get in touch, to qcp@crazyscot.com
.
Please also consider supporting the galaxy of projects this work builds upon. Most notably, Quinn is a pure-Rust implementation of the QUIC protocol, without which qcp simply wouldn't exist in its current form.
Some ideas for the future, in no particular order:
scp -r
)ftp
)rsync
protocol or similar (send only the sections you need to)