1

Чтобы использовать rsync я создал скрипт Bash. Он отлично работает из 32-разрядной оболочки Cygwin в Win 7, но не работает при запуске из планировщика задач Win 7. Мой скрипт Task Scheduler прост:

c:\cygwin\bin\bash.exe -l -c "/home/user/rsync_Windows_Backup >> /home/user/Documents_cron.log 2>&1"

Начальный каталог для задания установлен в C:\Cygwin\bin .

Мой сценарий Bash представляет собой типичный rsync [options] SRC DEST и некоторые другие вспомогательные функции.

Команда rsync в моем скрипте Bash rsync_Windows_Backup :

/bin/time -f "\nElapse (hh:mm:ss.ss) %E" \ 
rsync.exe -ravuz --copy-links "$SRC" "$DEST" >> "$LOG" \ 
2 >> "$LOG"

Я тестировал скрипт из командной строки Cygwin. Работает как положено, т.е.

$ ./rsync_Windows_Backup - succeeds.  

Однако заданию планировщика задач не удается определить, что он не может найти папку DEST, на которую ссылается сценарий Bash. Когда я делаю cd DEST из командной строки BASH, папка становится доступной и может быть записана в нее.

Я должен добавить еще некоторые детали, отправитель - это рабочий стол Win 7, который сопоставлен с приемником рабочего стола Vista с отображением диска J: . Сценарий Bash делает начать , но не с:

rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: mkdir "/cygdrive/J/DocumentsBackup" failed: No such file or directory (2) rsync error:  error in file IO (code 11)

Я могу удалить первую ошибку, изменив конфигурацию на Windows 7 на вкладке «Общие» свойств планировщика заданий. Я не могу понять, почему mkdir не видит долю J:

Чтобы проверить подключение к локальной сети, я также использовал net use J: \\server\share . Он подключается нормально и позволяет перечислять и писать, и т.д.

Когда я запускаю же задача планировщика заданий в Windows Vista он работает нормально.

Это какая-то более мелкая проблема NTLM или другая проблема с разрешениями на Win 7? Я в тупике на данный момент.

1 ответ1

1

Теперь у меня это работает в Win 7 из планировщика задач, как мне нужно. Спасибо @netubsi и @firerat за предложения, которые приведут к решению.

Вот что я сделал:

cmd /c net use T: '\\server\share'        # Created a separate temporary share for Cygwin
DEST="/cygdrive/T/User/FolderBackup/"     # Use temporary Share in Destination
rsync -avuz --copy-links "$SRC" "$DEST"   # Do backup
cmd /c net use T: /delete                 # Remove temporary share 

Похоже, что в WIN 7 общий ресурс, созданный в Windows, НЕ доступен для сценария Cygwin, ЕСЛИ он запускается из планировщика задач Win 7. Он доступен, если скрипт запускается из командной строки Cygwin. Также кажется, что это НЕ проблема в Win Vista.

Это кажется странным для меня. Возможно, есть еще одно объяснение, которое мне не хватает. Однако я просто рад, что это работает !!

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