[ale] rsync + ssh + cron

Nathan J. Underwood ale1 at cybertechcafe.net
Tue May 23 13:06:11 EDT 2006


The error that I'm getting (figured that may be handy) when I try to run 
it is:

/usr/bin/rsync -av -e 'ssh -p 2201' /home/nathan/source/ 
nathan at lint-1:/home/nathan/destination --progress --stats --compress 
--delete
Missing trailing-' in remote-shell command.
rsync error: syntax or usage error (code 1) at main.c(335) [sender=2.6.8]
[nathan at linux-fs2 scripts]$


If I just copy and paste the command line and execute it it works.

Nathan J. Underwood wrote:
> I'm trying to come up with a script to do remote backups with rsync + 
> ssh + cron.  I got the idea initially from a couple of articles and 
> based mine on this one -> 
> http://www.mikerubel.org/computers/rsync_snapshots/ (sortof).  At any 
> rate, I'm having trouble getting the script to connect to a remote 
> computer via rsync using SSH.  To test, I can echo the command line 
> being sent by the script and copy + paste it and run it with no 
> errors, but I just can't run it from the script. 
>
> Environment :
> rsync v2.6.8
> openssl v0.9.7a-40
>
>
> I have a user setup to log in using rsa keys with no passphrase and 
> have tested to make sure this works (i.e. log into the destination box 
> from the source box via ssh using this username and I am not prompted 
> for a password / passphrase).
>
> I've been googling for a couple of hours trying to avoid the 'rtfm' 
> response and have found a couple that indicate that my script *should* 
> work but I'm still missing something.
>
> Below is the script:
>
> #!/bin/bash
> # version 0.01a
> #
> # snapshot2.sh - This will use rsync to backup the files in SOURCE
> #
> # Dependancies:
> # rsync - last tested with v2.6.8
> # openssl - last tested with v0.9.7a-40
> # ssh login with RSA keys with no pw
> #
> # CREDITS
> # This script uses some of the concepts and ideas from Mike Rubel's 
> script at http://www.mikerubel.org/computers/rsync_snapshots/
>
> configFile=                     # if you wish to put all of these 
> configs in a separate file,
>                                 # enter the full filesystem path to it 
> here (all other configs
>                                 # will be ignored)
> srcLoc="/home/nathan/source/"    # full filesystem path to the files 
> being backed up
> srcHost=""                      # hostname or IP address of host with 
> source.  leave blank for local
> srcUserName="nathan"            # username on source system (not req 
> if local)
> dstLoc="/home/nathan/destination"            # full filesystem path to 
> the backup destination
> dstHost="lint-1"             # hostname or IP address of host to 
> backup to.  leave blank for local
> dstUserName="nathan"            # username on dest system (not req if 
> local)
> method="/usr/bin/ssh -p 2201"            # this will be used for the 
> -e argument to rsync
> preFlags="-av"                  # any flags / arguments to be added to 
> the beginning of the backup script
> postFlags="--progress --stats --compress --delete"  # any flags / 
> arguments to be added to the end of the backup script
> numOfHist="4"                   # how many old copies to keep
>
>
>
> #------------------------------------------
> # no tinkering beyond this point
> #------------------------------------------
>
> PATH="$PATH:/usr/bin"
> # Get Commands
> RSYNC=$(which rsync)            # rsync
> CP=$(which cp)                  # cp (copy)
> MV=$(which mv)                  # mv (move)
> ID=$(which id)                  # id
> ECHO=$(which echo)              # echo
> SSH=$(which ssh)                # ssh
>
> # Check to make sure that this is being ran by root
> #if (( `$ID -u` != 0 )); then
> #    { $ECHO "Sorry, must be root.  Exiting..."; exit; }
> #fi
>
>
> #------------------------------------------
> # Build rsync command to be ran
> #------------------------------------------
> #rsync -av -e 'ssh -p 2201' ../source/ nathan at linux-fs2:destination 
> --progress --stats --compress --delete --link-dest=destination.1
>
> # Get flags to be added before the source
> if [ -n "$preFlags" ]; then
>     PREFLAGS=" $preFlags";
> fi
>
> # Get the method
> if [ -n "$method" ]; then
>     METHOD=" -e '$method'"
> fi
>
> # Setup the source.  Check for a source host (i.e. the source is 
> another computer) and, if one is there, verify
> # that a source username has been added.
> if [ -n "$srcHost" ]; then
>         if [ -z "$srcUserName" ]; then
>             $ECHO "Sorry, source host specified but no source 
> username.  Exiting..."; exit;
>         else
>             SRC="$srcUserName@$srcHost:$srcLoc"
>         fi
>     else
>         SRC="$srcLoc"
> fi
>
> # Setup the destination.  Check for a destination host (i.e. the 
> destination is another computer) and, if one is there, verify
> # that a destination username has been added.
> if [ -n "$dstHost" ]; then
>         if [ -z "$dstUserName" ]; then
>             $ECHO "Sorry, destination host specified but no 
> destination username.  Exiting..."; exit;
>         else
>             DST="$dstUserName@$dstHost:$dstLoc"
>         fi
>     else
>         DST="$dstLoc"
> fi
>
> #if [ "$postFlags" ]; then
> #    POSTFLAGS= " $POSTFLAGS";
> #fi
>
> COMMAND="$RSYNC $PREFLAGS $METHOD $SRC $DST $POSTFLAGS"
>
>
> echo $COMMAND
> $COMMAND
> ------------------------------------------------------------------------
>
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://www.ale.org/mailman/listinfo/ale
-------------- next part --------------
An HTML attachment was scrubbed...




More information about the Ale mailing list