2010-11-04 4 views
0

Je tente désespérément de déployer mon application Symfony avec Rsync.Déploiement de Symfony Projekt à l'aide de Rsync sous Windows 7 - Problème d'autorisation

Je installe cwRsync et cela fonctionne un peu, au moins SSH. Mon application se trouve dans E: \ xampp \ htdocs \ MyProject. Rsync crée réellement un répertoire sur mon serveur mais à part ça, je reçois seulement des erreurs d'autorisation.

Maintenant, cela semble être un problème commun, mais je ne suis pas en mesure de mettre en œuvre des solutions, comme celle-ci: cwRsync ignores "nontsec" on Windows 7

J'ai installé cwRsync dans le répertoire suivant: c: \ cwRsync

Ma question: à quoi mon fichier fstab doit-il ressembler, et où dois-je même le mettre? Y a-t-il d'autres solutions à ce problème?

Merci d'avance!

+0

La question que vous référence est essentiellement la solution - il suffit de créer un fichier dans 'C: \ cwRsync \ etc» appelé 'fstab' et ajouter la ligne' none/cygdrive cygdrive binaire, posix = 0, utilisateur, noacl 0 0' à lui. – Raise

Répondre

0

J'avais posté la question à laquelle vous faisiez référence. Voici ce que j'ai fini par faire pour faire fonctionner symfony project:deploy à partir de Windows 7 (il a fallu pirater un peu symfony, donc ce n'est peut-être pas la solution la plus optimale). Avec cette solution, vous n'avez pas besoin d'installer cygwin fullblown, vous avez juste besoin de cwRsync.

Dans votre fstab, ajoutez cette ligne (fstab devrait se trouver sous [cwrsync install dir]\etc):

C:/wamp/www /www ntfs binary,noacl 0 0 

Ce essentiellement des cartes "C: \ wamp \ www" sur votre système de fichiers de Windows pour "/ www" pour Cygwin.

Modifier symfony/lib/task/sfProjectDeployTask.class.php:

protected function execute($arguments = array(), $options = array()) 
{ 
    ... 
    $dryRun = $options['go'] ? '' : '--dry-run'; 

    // -- start hack -- 
    if(isset($properties['src'])) 
    $src = $properties['src']; 
    else 
    $src = './'; 

    $command = "rsync $dryRun $parameters -e $ssh $src $user$host:$dir"; 
    // -- end hack -- 

    $this->getFilesystem()->execute($command, $options['trace'] ? array($this, 'logOutput') : null, array($this, 'logErrors')); 

    $this->clearBuffers(); 
} 

Cela vous permet de spécifier un champ src supplémentaire properties.ini:

src=/www/myProject 

Faire cela fait toute la cartographie du système de fichiers entre les fenêtres et Cygwin beaucoup plus clairement défini. Cygwin (et cwRsync) comprend mieux les chemins Unix que les chemins Windows (c'est-à-dire /www par rapport à C:/wamp/www), ce qui fait que tout fonctionne.

0

Exécuter un script

Je pense que Rsync casse toujours les permissions des fichiers lors de la synchronisation entre Windows et Linux.

Vous pouvez très facilement créer un script qui parcourt votre fichier après une synchronisation et réinitialise les autorisations de fichier à l'aide de chmod.