1

Я переписываю простой сценарий CopyScript.sh , который я написал несколько лет назад для копирования содержимого с моего NAS на USB-диск.

#!/bin/bash
SYNCPATH="/volume1/"
SYNCPATHTO="/volumeUSB1/usbshare/synology-may-2015-bak/"
NAMELOG="/volume1/homes/sando/logrsync.log"
echo "${NAMELOG}"
date >"${NAMELOG}"
rsync --verbose --recursive --size-only --exclude-from 'exclude-list.txt' $SYNCPATH $SYNCPATHTO >> $NAMELOG 2>&1
date  >> "${NAMELOG}"
echo DONE >> "${NAMELOG}"

Однако, когда я выполняю bash CopyScript.sh я получаю следующую ошибку: «неоднозначное перенаправление: строка 7: 1»

И действительно, когда я смотрю на файлы в моей файловой системе, я вижу 2 файла журнала с именем logrsync.log, один из 1 кБ и один из 0 кБ. Я понимаю, что это дает неоднозначное перенаправление, но почему два файла? Я считаю, что довольно похожий код работал на моей старой системе. Что мне не хватает?

Ура, Сандо

2 ответа2

0

Попробуйте поместить переменную NAMELOG в кавычки в перенаправлении rsync, то есть "$ {NAMELOG}"

0

Вы пытаетесь записать действие rsync в лог-файл

Но это делается не с помощью перенаправления >>, а с помощью некоторых параметров.

--log-file=FILE         override the "log file" setting
--log-file-format=FMT   override the "log format" setting

**--log-file=FIL**E This option causes rsync to log what it is doing to a file.  This is similar to the logging that a daemon  does, but  can  be requested  for the client side and/or the server side of a non-daemon transfer.  If specified as a client option, transfer logging will be enabled with a default format of "%i %n%L".  See  the 
**--log-file-format** option if you wish to override this.

**--log-file-format=FORMAT** This  allows  you  to  specify  exactly what per-update logging is put into the file specified by the --log-file option (which must also be specified for this option to have any effect).   If  you  specify  an  empty  string, updated files will not be mentioned in the log file.  For a list of the possible escape characters, see the "log format" setting in the rsyncd.conf manpage. The default FORMAT used if --log-file is specified and this option is not is ’%i %n%L’.

Итак, я хотел бы попробовать это:

rsync --verbose --recursive --size-only --exclude-from 'exclude-list.txt' --log-file=$NAMELOG  $SYNCPATH $SYNCPATHTO

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .