Symfony : Rsync sous Windows

2010-08-18

Ce soir, je cherchais à faire fonctionner le Rsync sous Windows, et particulièrement sous Symfony. En effet, un outil existant permet de faire fonctionner du Rsync sous Windows vers un serveur unix via le protocole SSH. Il est trouvable à l'adresse suivante : http://trac.symfony-project.org/wiki/SymfonySyncOnWindows

Comment ça marche ?

Téléchargez l'archive fournie sur le lien ci-dessus puis décompressez-la dans un répertoire. Nous prendrons comme exemple C:\rsync. Il vous faut ensuite aller éditer les variables d'environnement de Windows et particulièrement la variable PATH à laquelle vous devez rajouter votre répertoire C:\rsync. Vous pouvez désormais utiliser la commande via une invite de commande (console) (Démarrer > Exécuter > cmd).

Modifier la librairie Symfony

Oui mais voilà, la commande ne va pas fonctionner pour autant lorsque vous lancerez votre 'symfony project:deploy <environment> --go'. Pour celà, il vous faut aller modifier la ligne 164 du fichier lib/vendor/symfony/lib/task/project/sfProjectDeployTask.class.php. Modifiez la ligne :
$this->getFilesystem()->execute($command, $options['trace'] ? array($this, 'logOutput') : null, array($this, 'logErrors'));
en :
$this->getFilesystem()->execute('start cmd /k ' . $command, $options['trace'] ? array($this, 'logOutput') : null, array($this, 'logErrors'));
La commande start cmd /k va nous permettre d'ouvrir une invite de commande qui se chargera d'exécuter le rsync. Ainsi, si vous synchronisez comme moi via SSH, vous n'aurez plus qu'à taper votre mot de passe qui ne peut pas être inscrit dans le fichier de configuration, par raisons de sécurité. En espérant que cette petite astuce puisse avoir aider certains d'entre vous :)

Comments