diff options
author | Florian Pritz <bluewind@xinu.at> | 2011-06-24 20:15:49 +0200 |
---|---|---|
committer | Florian Pritz <bluewind@xinu.at> | 2011-06-24 20:15:49 +0200 |
commit | 0fa1debfd6857edf7298a2478d7c877b29645ff3 (patch) | |
tree | c2f7e87ff4e3b049f05954c9452ba0729d8317cd /rsyncd-scp.sh | |
parent | 26c3975f156e74cd52bddfce7e1e654762847d96 (diff) | |
download | bin-0fa1debfd6857edf7298a2478d7c877b29645ff3.tar.gz bin-0fa1debfd6857edf7298a2478d7c877b29645ff3.tar.xz |
add rsync-scp.sh
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'rsyncd-scp.sh')
-rwxr-xr-x | rsyncd-scp.sh | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/rsyncd-scp.sh b/rsyncd-scp.sh new file mode 100755 index 0000000..de54a8e --- /dev/null +++ b/rsyncd-scp.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +set -e + +host=${1%%:*} +path=${1#*:} +dst=$2 + +if [[ -z $1 || -z $2 ]]; then + echo "${0%%*/}: <host:src> <dst>" + exit 0 +fi + +while :; do + port=$RANDOM + [[ $port -gt 1024 && $port -lt 65535 ]] && break +done + +rm_tmpdir=$(ssh $host 'mktemp -d /tmp/rsyncd-scp.XXXXXX') + +cleanup() { + ssh $host "kill \`<'$rm_tmpdir/pid'\`" &>/dev/null || true + ssh $host "rm -rf $rm_tmpdir" +} + +trap cleanup EXIT INT TERM + +ssh $host 'cat <<EOF >'"$rm_tmpdir"'/rsyncd.conf +max connections = 1 +pid file = '"$rm_tmpdir"'/pid +lock file = '"$rm_tmpdir"'/lock +use chroot = no +log file = /dev/null +port = '$port' +[share] + path = '"$path"' +EOF +rsync --daemon --config='"$rm_tmpdir"'/rsyncd.conf; +' + +rsync --progress --port $port "rsync://$host/share/" -rt "$dst" + |