Destination directory creation

Dave Markham dave.markham at fjserv.net
Fri Feb 16 13:42:47 GMT 2007


Hi people. My first post so be lenient :)

I have read stuff on rsync, looked through the options and read the man
page but cannot seem to find an answer to my problem.

Ok.

I have a script which connects to a remote machine via ssh and pulls
back a list of source directories/files from a config file on the remote
server. I then loop these lines and do an rsync for each item to pull
the files back to my local machine.

The rsync syntax im using is this (there is much more in the script im
just pulling out important bits) :-

RSYNC_BIN=$(/usr/bin/which rsync)
# May want to drop the v verbose
RSYNC_OPTS=" -Pvprtlz --delete --delete-excluded --copy-unsafe-links
--numeric-ids"
RSYNC="${RSYNC_BIN} ${RSYNC_OPTS}"


# Ok here is the Rsync loop
        for RLIST in ${remote_get_list}
        do
                # Going to put a safety test here in case / is file list
                if [ "${RLIST}" = "/" ];then
                        echo "\n[Remote_Get for
${remote_get_host}]\n\tWARNING:We dont want / as a source. Too intense
so skipping." >> ${remote_errorlog}
                        continue
                fi

                # Rsync output will be logging to error file so
                # need list there too for clarity
                echo "\n\tStaring get of [${RLIST}]" >> ${remote_mainlog}
                echo "\n\tStaring get of [${RLIST}]\n" >> ${remote_errorlog}

               
                ${RSYNC} -e ssh 2>/dev/null
user@${remote_get_host}:${RLIST} ${remote_get_localdir} >>
${remote_errorlog} 2>> ${remote_errorlog}
                # Check each Rsync run was successful or had errors
                if [ $? = 0 ];then
                        echo "\tGet of [${RLIST}] status [Successful]"
>> ${remote_mainlog}
                else
                        echo "\tGet of [${RLIST}] status
[Suspect]\n\tSee [${remote_errorlog}]" >> ${remote_mainlog}
                fi

        done



Now ${remote_get_list} is a variable containing a list of files or dirs
from a config file which looks like this :- ( obviously comments, blank
lines are ignore )

# This is a comment line
# so is this
## multiple hashes
#/location1
#/
#/loction2/somwhere
#/dir/dir2/file #Plus comments here
/tmp/davefile2
/export/home/user


The question i have is this :-

when i run the script using the above config file it only creates locally :-

${remote_get_localdir}/davefile2
${remote_get_localdir}/user

I see this as a problem as what if i have the following in the config
file :-

/etc/inet/hosts
/export/home/user/hosts

This will create ${remote_get_localdir}/hosts from source
/etc/inet/hosts and then overwrite it with /export/home/user/hosts.

Is this correct? What i want is for rsync to create this :-

${remote_get_localdir}/etc/inet/hosts
${remote_get_localdir}/export/home/users/hosts

Anyone any ideas?


More information about the rsync mailing list