Anyway, we use both of them. And there are many cases then you have expressions like:
#!/usr/bin/env bash URL1=xxx.yyyy.com::point/file1.txt # native rsync URL2=xxx.yyyy.com:some_folder/file2.txt # rsync-ssh #... rsync --contimeout 10 --timeout 40 $URL1 file1.txt rsync -e ssh "-o BatchMode=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ServerAliveInterval=40" $URL2 dir/ # same things many times
As you can see, we have to use different syntax for native- and ssh-rsync: --contimeout is available only for native case. Really bad news, especially if I want to omit 'rsync' and it's options each time. Should I know what type of URI I'll got in specific call?!. No! It's easy to rewrite it as follows:
SSH_OPTS="-o BatchMode=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=10 -o ServerAliveInterval=40" # select rsync or rsync-ssh syntax automatically function RSYNC { local looks_like_rsync= for a in "$@" do if [[ $a =~ :: ]]; then looks_like_rsync=yes break fi done if [[ -n $looks_like_rsync ]]; then rsync --contimeout=10 --timeout=40 -tv "$@" return $? fi rsync -tv -e "ssh $SSH_OPTS" "$@" }
No comments:
Post a Comment