Date: Mon, 04 Sep 2006 10:14:53 +0200 From: Erik Norgaard <norgaard@locolomo.org> To: Gary Kline <kline@sage.thought.org> Cc: FreeBSD Mailing List <freebsd-questions@FreeBSD.ORG> Subject: Re: time to come clean... . Message-ID: <44FBE07D.9070004@locolomo.org> In-Reply-To: <20060904043500.GA8617@thought.org> References: <20060904043500.GA8617@thought.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Gary Kline wrote: > I've just installed/reinstaled rsync here on ns1.thought.org (aka > "sage") and on zen.thought.org. I've fiddled with the rsyncd.conf on > both FBSD systems. What I don't understand is how rsync, using > ssh, gets past the secret password. If, say, I want to > copy all of my www files from sage to zen, what do I put > into /usr/local/etc/rsyncd.secrets? Let's say that rsyncd.secrets > had: > > # User : pw > root : abcd > kline: wxyz I'd use ssh keys, check the man page on how to specify keys for use with rsync/ssh. > rsync --verbose --progress --stats --compress --rsh=/usr/local/bin/ssh > --recursive --times --perms --links --delete \ > --exclude "*bak" --exclude "*~" \ > /usr/local/www/* zen.thought.org:/usr/local/www Careful with wildcards, they may be interpreted different than you expect. I made this script, the script assumes that paths are the same on source and destination: #!/bin/sh # RSYNC_USER is set as an environment variable or defaults to $USER RSYNC_USER=${RSYNC_USER:-$USER} # Exit if RSYNC_HOST not defined, there is no good default value. if [ -z $RSYNC_HOST ]; then echo "RSYNC_HOST undefined, no host to syncronize with."; exit; fi # RSYNC_PATH sets the path to be syncronized, defaults to $HOME # would be neat to check if path is absolute or else assume relative # to $HOME or set RSYNC_PATH as environment/command line variable if [ -z $1 ]; then RSYNC_PATH=$HOME; else RSYNC_PATH=$HOME/$1 fi # Syncronize folders echo "Syncing $RSYNC_PATH..." # Exclude patterns may be stored in .rsync in the home directory or # the sub directory being syncronized if [ -f $RSYNC_PATH/.rsync ]; then rsync -Cptuvaz --rsh="ssh" --exclude-from=$RSYNC_PATH/.rsync \ $RSYNC_PATH/ $RSYNC_USER\@$RSYNC_HOST:$RSYNC_PATH; else rsync -Cptuvaz --rsh="ssh" \ $RSYNC_PATH/ $RSYNC_USER\@$RSYNC_HOST:$RSYNC_PATH; fi exit; You put your exclude list in a file, .rsync (see the man-page), what to exclude may depend on the directory you're rsyncing. If you're automating this as a cron-job, then you may not have the environment variables set. I think that rsync defaults to ssh so the --rsh is really obsolete, but I like to make it explicit. Cheers, Erik -- Ph: +34.666334818 web: http://www.locolomo.org X.509 Certificate: http://www.locolomo.org/crt/8D03551FFCE04F0C.crt Key ID: 69:79:B8:2C:E3:8F:E7:BE:5D:C3:C3:B1:74:62:B8:3F:9F:1F:69:B9
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?44FBE07D.9070004>