O script bash falha no agendador de tarefas do Windows 7

1

Para usar rsync , criei um script Bash. Ele roda bem a partir do shell Cygwin de 32 bits no Win 7, mas falha quando executado a partir do Agendador de Tarefas do Win 7. Meu script do Agendador de Tarefas é simples:

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

O diretório inicial da tarefa está definido como C:\Cygwin\bin .

Meu script de Bash é um típico rsync [options] SRC DEST e algumas tarefas domésticas relacionadas.

O comando rsync no meu script rsync_Windows_Backup Bash é:

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

Eu testei o script na linha de comando do Cygwin. Funciona como esperado, ou seja,

$ ./rsync_Windows_Backup - succeeds.  

No entanto, o trabalho do Agendador de Tarefas não funciona quando não consegue encontrar a pasta DEST à qual o script Bash faz referência. Quando eu faço um cd DEST da linha de comando BASH, a pasta está disponível e pode ser gravada também.

Devo adicionar mais alguns detalhes, o remetente é uma área de trabalho do Win 7 que é mapeada para um receptor de desktop Vista com um mapeamento de unidade J: . O script Bash faz iniciar, mas falha com:

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)

Eu posso remover o primeiro erro alterando a configuração para o Windows 7 na guia Geral das propriedades do Agendador de tarefas. Não consigo ver por que o mkdir não consegue ver a parte J: .

Para verificar a conexão da LAN, também fiz um net use J: \server\share . Ele se conecta bem e permite listar e escrever, etc.

Quando executo o mesmo trabalho do agendador de tarefas no Windows Vista, ele funciona bem.

Este é um problema de NTLM mais fino ou outro problema de permissão no Win 7? Estou perplexo no momento.

    
por dpminusa 18.09.2013 / 11:08

1 resposta

1

Agora tenho isso funcionando no Win 7 do agendador de tarefas conforme necessário. Obrigado a @netubsi e @firerat pelas sugestões que levam a uma solução.

Aqui está o que eu fiz:

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 

Parece que, no WIN 7, o compartilhamento criado no Windows NÃO está disponível para um script do Cygwin, se ele for iniciado no agendador de tarefas do Win 7. Ele estará disponível se o script for iniciado na linha de comando do Cygwin. Também parece que isso não é um problema no Win Vista.

Isso parece estranho para mim. Talvez haja outra explicação que esteja faltando. No entanto, estou apenas aliviado por ter este trabalho!

    
por 22.09.2013 / 05:55