Ad-Hoc rsync daemons
The other day I needed to copy a bunch of files between to servers
in my home network. Because of the volume I wanted to copy the files
without having to go through ssh
's encryption overhead. So I
figured I could use netcat
for the data transport.
To do that I wrote these short scripts.
Remote scripts
Copy these scripts on the remote server. Make sure they are executable.
- Remote CLI
- Remote Helper script
Local scripts
Copy these scripts on the local server. Make sure they are executable
- Local CLI
- Local Helper Script
Usage
Usage is fairly straight forward, on the remote server enter the command:
./recv-nc
This will make remote listen for new client connects. On the local server, enter the command:
./send -avzr --delete --stats SRC/ remote:DST
Actually, just use whatever rsync
options you need to use. The send
script will include the --rsh
option to make sure the helper
script gets executed.
Issues
Unfortunately the local helper script does not detect that the transfer has completed. The remote helper script would finish correctly and exit when the transfer is done.
You can simply press Ctrl+C
to quit, or if you want to see any
summary stats, I would kill the running cat
command.
Example:
$ bg
[2]+ ./send -avzr --stats SRC localhost:DST &
$ pidof cat
13143
$ kill 13143
$ Terminated
Number of files: 6 (reg: 5, dir: 1)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 0
Total file size: 5,869 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 202
Total bytes received: 17
sent 202 bytes received 17 bytes 438.00 bytes/sec
total size is 5,869 speedup is 26.80
rsync error: syntax or usage error (code 1) at main.c(1189) [sender=3.1.3]
$