meta data for this page
rsync
between two remotes
Rsync cannot work with two remotes. As workaround SSH tunnel to remote host is created and rsync is spawned locally on src host.
How to rsync files between two remotes?
#!/bin/bash -eux SOURCE_USER=root SOURCE_HOST=192.168.179.2 SOURCE_PATH="/public/image.iso" TARGET_USER=root TARGET_HOST=pve5 TARGET_PATH=/mnt/pve/cephfs/template/iso/ # Escape characters: SOURCE_PATH=$(printf %q "$SOURCE_PATH") TARGET_PATH=$(printf %s "$TARGET_PATH") OPTS="--recursive --times --partial --progress --verbose --update --archive --stats" OPTS="${OPTS} --bwlimit=400" OPTS="${OPTS} --compress --compress-level=9" # Test connection to accept remote host key ssh -l $TARGET_USER -A -R localhost:22000:$TARGET_HOST:22 $SOURCE_USER@$SOURCE_HOST "ssh localhost -p 22000 -l root whoami" ssh -l $TARGET_USER -A -R localhost:22000:$TARGET_HOST:22 \ $SOURCE_USER@$SOURCE_HOST "rsync -e 'ssh -p 22000' ${OPTS} \ ${SOURCE_PATH} \ $TARGET_USER@localhost:${TARGET_PATH}"