rsync parameters errors

Joe josephj at main.nc.us
Thu Jan 24 17:51:52 MST 2013


I added eval and the backslash.  No joy.

What does work, but shouldn't be necessary was using a subshell to force
rsync onto a lower parameter diet:

COMMAND="(rsync ${DRY_RUN} -avushi ${DELETE} --stats --progress
--log-file=${LOGFILE1} ${MOUNT_POINT[0]}/${DIRECTORY[0]}/
${MOUNT_POINT[1]}/${DIRECTORY[1]}) | tee ${LOGFILE2} 2>&1"
echo "RUNNING [[${COMMAND}]]" ## let user see what's being done
eval ${COMMAND}                    ## Do it!

I'll see if any of the newer comments shed any further light on this.

Joe

On 01/24/2013 12:48 PM, Hans-Kristian Bakke wrote:
> It seems to me that the | is interpreted literally. You need to escape
> it like this in your command variable: \|
>
> To make the logfile and source/destination paths "space proof" when
> you store the command in a variable you add escaped " around the paths
> like this: \"/path/to/logfile\".
> You should also check out running your command with eval, even if it
> is not needed in your exact scenario.
>
> Mvh
>
> *Hans-Kristian Bakke*
> Mob: 91 76 17 38
>
>
> On 24 January 2013 12:08, Joe <josephj at main.nc.us
> <mailto:josephj at main.nc.us>> wrote:
>
>     In my new bash script, I'm doing what I think is a very simple rsync
>     command the way I'm used to doing it.  I just do a lot of setup and
>     checking before I get to it.
>
>     When I run it, it gets very unhappy with me.  It's probably something
>     very simple.
>
>     I need to build the rsync command in a string so that some things
>     can go
>     away - like if my variables DRY_RUN and DELETE are undefined, they
>     should be gone when the string is evaluated.  Without this, DRY_RUN
>     turns into "" and rsync still sees it as the first (null)
>     parameter and
>     gets totally lost.  I brought this up in a previous thread here
>     awhile ago.
>
>     The ls commands are only in the script to document the state of things
>     right before rsync runs.
>     The first version of COMMAND (commented out here) was intended to
>     protect the arguments if there were embedded blanks.  It also
>     fails when
>     I use it, but with slightly different error messages.
>
>     /home/bigbird/pgm/backup_periodic/ is where the script is stored
>     and is
>     the current directory when it runs.  This script is nested within a
>     couple of others, the first of which calls the the second using
>     sudo, so
>     everything runs as root.
>
>     I'm running my script with
>     shopt -s -o xtrace  # debug
>     shopt -s -o verbose  # debug
>     That's what makes this output a little dense, but complete.
>
>     What the heck am I doing to get rsync so confused?
>
>     (The destination was built using my previous notebook (RIP).
>      That's why
>     there's so much more in it.  I'll move things around before I run
>     anything with --delete.)
>
>     BTW, when I first ran this, my log file did not exist and rsync
>     said it
>     would ignore it because it didn't exist.  In the past, this worked
>     fine.  If it wasn't there, rsync just created it (which is the
>     expected
>     behavior - at least to me).
>
>     TIA
>         Joe
>
>     kubuntu precise (12.04),  64-bit i5 notebook  running in konsole
>     under KDE.
>     bigbird at ramdass:~/bin$ rsync --version
>     rsync  version 3.0.9  protocol version 30
>
>     ls -l ${LOGFILE1}
>     + ls -l /home/bigbird/rlog/ramdass-01-internal_webcasts_log
>     -rw-rw-rw- 1 bigbird bigbird 0 Jan 24 05:11
>     /home/bigbird/rlog/ramdass-01-internal_webcasts_log
>     ls -l ${LOGFILE2}
>     + ls -l /home/bigbird/rlog/ramdass-01-internal_webcasts_output
>     -rw-rw-rw- 1 root root 0 Jan 24 05:11
>     /home/bigbird/rlog/ramdass-01-internal_webcasts_output
>     ls -l ${MOUNT_POINT[0]}/${DIRECTORY[0]}/
>     + ls -l /media/dataspace/data/webcasts/
>     total 12
>     drwxrwxr-x  5 bigbird bigbird 4096 Dec 14 13:24 Business
>     drwxrwxr-x 13 bigbird bigbird 4096 Jan 19 06:07 Health
>     drwxrwxr-x 10 bigbird bigbird 4096 Jan 10 12:38 Spiritual
>     ls -l ${MOUNT_POINT[1]}/${DIRECTORY[1]}
>     + ls -l /media/dest/data/webcasts
>     total 44
>     drwxr-xr-x  6 bigbird bigbird 4096 Jun  4  2011 Business
>     drwxr-xr-x  2 bigbird bigbird 4096 May  5  2012 Comedy
>     drwxr-xr-x  2 bigbird bigbird 4096 Oct 20  2011 Computer
>     drwxr-xr-x  4 bigbird bigbird 4096 Jun  4  2011 Eco
>     drwxr-xr-x  3 bigbird bigbird 4096 Oct 26  2011 Education
>     drwxr-xr-x 13 bigbird bigbird 4096 Oct 31  2011 Health
>     drwxr-xr-x  2 bigbird bigbird 4096 Nov  4  2011 Links
>     drwxr-xr-x  2 bigbird bigbird 4096 Nov  6  2011 Music
>     drwxr-xr-x  2 bigbird bigbird 4096 Sep 26  2011 Nature
>     drwxr-xr-x 10 bigbird bigbird 4096 Nov  2  2011 Spiritual
>     -r--r--r--  1 bigbird bigbird 1043 Dec 19  2010 webcasts-info.txt
>     ##COMMAND="rsync ${DRY_RUN} -avushi ${DELETE} --stats --progress
>     --log-file=\"${LOGFILE1}\" \"${MOUNT_POINT[0]}/${DIRECTORY[0]}/\"
>     \"${MOUNT_POINT[1]}/${DIRECTORY[1]}\" | tee \"${LOGFILE2}\""
>     COMMAND="rsync ${DRY_RUN} -avushi ${DELETE} --stats --progress
>     --log-file=${LOGFILE1} ${MOUNT_POINT[0]}/${DIRECTORY[0]}/
>     ${MOUNT_POINT[1]}/${DIRECTORY[1]} | tee ${LOGFILE2}"
>     + COMMAND='rsync -n -avushi  --stats --progress
>     --log-file=/home/bigbird/rlog/ramdass-01-internal_webcasts_log
>     /media/dataspace/data/webcasts/ /media/dest/data/webcasts | tee
>     /home/bigbird/rlog/ramdass-01-internal_webcasts_output'
>     echo "RUNNING [[${COMMAND}]]" ## let user see what's being done
>     + echo 'RUNNING [[rsync -n -avushi  --stats --progress
>     --log-file=/home/bigbird/rlog/ramdass-01-internal_webcasts_log
>     /media/dataspace/data/webcasts/ /media/dest/data/webcasts | tee
>     /home/bigbird/rlog/ramdass-01-internal_webcasts_output]]'
>     RUNNING [[rsync -n -avushi  --stats --progress
>     --log-file=/home/bigbird/rlog/ramdass-01-internal_webcasts_log
>     /media/dataspace/data/webcasts/ /media/dest/data/webcasts | tee
>     /home/bigbird/rlog/ramdass-01-internal_webcasts_output]]
>     ${COMMAND}                    ## Do it!
>     + rsync -n -avushi --stats --progress
>     --log-file=/home/bigbird/rlog/ramdass-01-internal_webcasts_log
>     /media/dataspace/data/webcasts/ /media/dest/data/webcasts '|' tee
>     /home/bigbird/rlog/ramdass-01-internal_webcasts_output
>     sending incremental file list
>     rsync: link_stat "/home/bigbird/pgm/backup_periodic/|" failed: No such
>     file or directory (2)
>     rsync: link_stat "/home/bigbird/pgm/backup_periodic/tee" failed:
>     No such
>     file or directory (2)
>     rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]:
>     Broken pipe (32)
>     ERROR: destination must be a directory when copying more than 1 file
>     rsync error: errors selecting input/output files, dirs (code 3) at
>     main.c(571) [Receiver=3.0.9]
>     rsync: connection unexpectedly closed (9 bytes received so far)
>     [sender]
>     rsync error: error in rsync protocol data stream (code 12) at
>     io.c(605)
>     [sender=3.0.9]
>     RC=$?
>     + RC=12
>
>
>     --
>     Please use reply-all for most replies to avoid omitting the
>     mailing list.
>     To unsubscribe or change options:
>     https://lists.samba.org/mailman/listinfo/rsync
>     Before posting, read:
>     http://www.catb.org/~esr/faqs/smart-questions.html
>     <http://www.catb.org/%7Eesr/faqs/smart-questions.html>
>
>



More information about the rsync mailing list