[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