OK, je ne suis probablement pas la première personne à essayer de mettre en place une interface web basée sur PHP pour rsync afin de faciliter le déploiement, mais ça va.Synchronisation rsync omettre les répertoires
Nous avons un serveur 'QA' localement et un serveur 'Staging' sur Rackspace. J'ai mis en place des appariements de clés SSH pour que je puisse rsync entre les deux serveurs et tout fonctionne très bien. Le problème est que rsync est un peu flou quant à ce qu'il décide de mettre à jour.
Le script que j'ai écrit en premier exécute rsync avec le paramètre '--dry-run' pour obtenir une liste de tout ce qui doit être transféré. La commande est la suivante:
$strCheck = shell_exec(
"rsync " .
"--verbose " .
"--recursive " .
"--safe-links " .
"--checksum " .
"--dry-run " .
"--delete " .
"--delete-excluded " .
"--force " .
"--cvs-exclude " .
"--human-readable " .
"/apps/{$system}/ " .
"[email protected]:/apps/{$system}_staging/"
);
Maintenant tout cela fonctionne très bien et je peux analyser la chaîne qui est retournée dans les choses qui doivent supprimer et d'autres choses qui a besoin d'ajouter/mise à jour. Je construis ensuite un tableau HTML qui indente automatiquement chaque case en fonction de son emplacement dans la hiérarchie. J'utilise aussi un peu de javascript pour permettre à l'utilisateur de sélectionner tous les fichiers d'un dossier.
Si un dossier lui-même doit être ajouté/supprimé, il l'inclut dans la liste. Par exemple:
/newfolder/
/newfolder/file1.php
/newfolder/file2.php
qui est grande, parce que «/newfolder/» sera affiché avec un tiret et « /newfolder/file1.php » et « /newfolder/file2.php » seront chacun affichés avec deux indents sous '/ newfolder /'. La case à cocher à côté de '/ newfolder /' sélectionne automatiquement les deux fichiers 'enfant' et tout le monde est content.
Cependant, si elle est juste d'ajouter/mettre à jour des fichiers dans un dossier, il omet le dossier lui-même:
/oldfolder/filea.php
/oldfolder/fileb.php
...
Ce qui signifie que tous les fichiers «/oldfolder/» sera avoir deux retraits, mais il n'y a aucun mécanisme visible avec lequel sélectionner tous les fichiers dans le dossier. Donc ma question est la suivante: y a-t-il quelque chose qui me manque dans les paramètres rsync disponibles où je peux le forcer à inclure le dossier pour tous les fichiers mis à jour, ou vais-je devoir les ajouter en boucle dans le tableau? Si c'est le dernier, quelle serait la meilleure façon de faire cela?
Aidez-moi Obi Stack Overflowbi, tu es mon seul espoir ...
pile obiflow kenobi? – falstro
+1 pour la qualité et le sujet de la question, et pour la référence ridicule. –