1 votes

Le script de Bash échoue à partir du planificateur de tâches de Windows 7

Afin d'utiliser rsync J'ai créé un script en Bash. Il s'exécute bien à partir du script Cygwin 32 bits sous Win 7 mais échoue lorsqu'il est exécuté à partir du planificateur de tâches de Win 7. Mon script de Task Scheduler est un simple :

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

Le répertoire initial de la tâche est défini comme suit C:\Cygwin\bin .

Mon script de Bash est un typique rsync [options] SRC DEST et quelques tâches ménagères connexes.

Le site rsync à l'intérieur de mon rsync_Windows_Backup Bash script est :

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

J'ai testé le script à partir de la ligne de commande Cygwin. Il s'exécute comme prévu, c'est-à-dire

$ ./rsync_Windows_Backup - succeeds.  

Cependant, la tâche du planificateur de tâches échoue car elle ne trouve pas le dossier DEST auquel le script de Bash fait référence. Lorsque je fais un cd DEST à partir de la ligne de commande BASH, le dossier est disponible et on peut y écrire aussi.

Je devrais ajouter quelques détails supplémentaires, l'expéditeur est un bureau Win 7 qui est mappé à un récepteur de bureau Vista avec un mappage de lecteur. J: . Le script de Bash fait commence mais échoue avec :

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)

Je peux supprimer la première erreur en changeant la configuration pour Windows 7 dans l'onglet Général des propriétés du planificateur de tâches. Je ne vois pas pourquoi la mkdir ne voit pas le partage J: .

Pour vérifier la connexion au réseau local, j'ai également effectué un net use J: \\server\share . Il se connecte bien et permet l'inscription et l'écriture, etc.

Lorsque j'exécute la même tâche du planificateur de tâches sous Windows Vista, elle fait fonctionnent bien.

S'agit-il d'un problème NTLM plus fin ou d'un autre problème de permission sur Win 7 ? Je suis dans l'impasse pour le moment.

1voto

dpminusa Points 181

Cela fonctionne maintenant dans Win 7 à partir du planificateur de tâches comme je le souhaite. Merci à @netubsi et @firerat pour les suggestions qui ont conduit à une solution.

Voici ce que j'ai fait :

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 

Il semble que dans WIN 7, le partage créé dans Windows n'est PAS disponible pour un script Cygwin, SI celui-ci est lancé à partir du planificateur de tâches de Win 7. Il EST disponible si le script est lancé à partir de la ligne de commande Cygwin. Il apparaît également que ce n'est PAS un problème dans Win Vista.

Cela me semble étrange. Peut-être y a-t-il une autre explication qui m'échappe. Cependant, je suis simplement soulagé d'avoir ce travail !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X