Quelle est la meilleure solution pour maintenir le contrôle des sauvegardes et des révisions sur les sites Web en direct ?

StackOverflow https://stackoverflow.com/questions/27292

  •  09-06-2019
  •  | 
  •  

Question

Quelle est la meilleure solution pour maintenir le contrôle des sauvegardes et des révisions sur les sites Web en direct ?

Dans le cadre de mon travail, je travaille avec plusieurs sites Web en direct.Nous avons besoin d'un moyen efficace pour conserver les sauvegardes des dossiers actifs au fil du temps.De plus, la mise à jour de ces sites peut être pénible, surtout si un changement se produit dans l'environnement en direct pour une raison quelconque.

L’idéal serait un contrôle de source sans tracas.J'ai implémenté SVN pendant un certain temps, ce qui était excellent comme semi-solution pour la sauvegarde ainsi que le contrôle des révisions (réversion facile des modifications temporaires ou avec rupture), etc.

Malheureusement, SVN place des répertoires cachés .SVN partout, ce qui pose des problèmes, en particulier lorsque d'autres développeurs modifient la structure des dossiers ou copient/déplacent les répertoires de sites Web.J'ai entendu l'argument selon lequel c'est une question d'éducation, etc.mais l'approche adoptée par SVN n'est tout simplement pas une solution pratique pour nous.

Je pense qu'une solution de sauvegarde incrémentielle pourrait être meilleure.

D'autres possibilités incluent :

  1. SVK, qui est uniquement en ligne de commande, ce qui devient un problème.De plus, je ne sais pas dans quelle mesure cela serait approprié.
  2. Mercuriel, peut-être avec quelques déclencheurs pour masquer le composant distribué, ce qui n'est pas requis dans ce cas et serait inutilement compliqué pour les autres développeurs.

    J'ai brièvement expérimenté Mercurial, mais je n'ai pas trouvé de moyen efficace de séparer le référentiel et de le maintenir constamment synchronisé avec la copie de travail du dossier actif.Peut-être qu'en tant que solution de contrôle de source (faisant en sorte que le référentiel et le dossier actif soient au même endroit) combinée à une autre solution de sauvegarde, cela pourrait être la voie à suivre.

    L'un des inconvénients de Mercurial est qu'il ne place pas les dossiers vides sous contrôle de source, ce qui pose problème pour les sites Web qui ont souvent des dossiers vides comme emplacements réservés pour les téléchargements de fichiers, etc.

  3. Rsync, sur lequel je n'ai pas vraiment étudié.

J'apprécierais vraiment vos conseils sur la meilleure façon de conserver des sauvegardes de sites Web en direct, idéalement avec un moyen simple de récupérer rapidement les versions précédentes.

Réponses aux réponses :

  • @Kibbee:

    • Il ne s'agit pas tant d'éducation que d'une absence de familiarité avec autre chose que VSS et d'un manque de temps/d'efforts pour apprendre autre chose.

    • L'approche xcopy/7-zip semble raisonnable, je suppose, mais elle prendrait rapidement beaucoup de place, n'est-ce pas ?

    • En ce qui concerne le contrôle de source, je pense que j'aimerais que le contrôle de source dise simplement que "c'est l'état du dossier maintenant, je vais m'en occuper et si je n'arrive pas à faire correspondre les éléments, c'est de votre faute, je' Je vais juste commencer de nouvelles histoires" plutôt que d'échouer durement.

  • @SteveM:

    • Oui, c'est une façon plus agréable de procéder, mais cela nécessiterait un changement culturel important.Cela dit, j’aime beaucoup cette approche.
  • @mk:

    • Bien, je n'ai pas pensé à utiliser Rsync pour déployer.Est-ce que cela télécharge uniquement les différences ?L'écrasement de l'intégralité du répertoire live à chaque fois que nous apportons une modification serait problématique en raison des temps d'arrêt du site.

Je suis toujours curieux de voir s'il existe des options plus traditionnelles

Était-ce utile?

La solution

Vous pouvez toujours utiliser SVN, mais au lieu de procéder à une extraction sur votre environnement en direct, effectuez une exportation afin qu'aucun répertoire .svn ne soit créé.L’inconvénient, bien sûr, est qu’aucune modification du code sur votre environnement réel ne peut avoir lieu.C'est une bonne chose.

En règle générale, les modifications de code sur les systèmes de production ne devraient jamais être autorisées.Le changement doit être effectué et testé dans un environnement de développement/test/UAT, puis une fois confirmé comme OK, vous pouvez marquer ce code dans SVN avec quelque chose comme RELEASE-x-x-x.Ensuite, sur le système live, exportez le code avec cette balise.

Autres conseils

Nous utilisons l'option 3.Rsync.J'ai écrit un script bash pour ce faire avec quelques vérifications supplémentaires, mais voici les bases de ce qu'il fait.

  1. Créez un tag pour pousser à vivre.
  2. Exécutez svn export sur cette balise.
  3. rsync pour vivre.

Jusqu’à présent, cela a fonctionné.Nous n'avons pas à nous soucier des conflits d'utilisateurs ni à avoir un utilisateur distinct pour exécuter svn sur la machine de production.

Toute solution de contrôle de source que vous choisirez rencontrera des problèmes si des personnes déplacent, suppriment ou ajoutent des fichiers sans en informer le système de contrôle de source.Je ne connais aucun élément de contrôle de source qui pourrait résoudre ce problème.

Dans le cas où vous ne parvenez tout simplement pas à éduquer les personnes travaillant sur le projet[1], vous devrez peut-être simplement utiliser des instantanés quotidiens.Quelque chose d'aussi simple qu'un fichier batch utilisant xcopy sur un lecteur réseau, et éventuellement 7-zip sur la ligne de commande pour le compresser afin qu'il ne prenne pas trop de place, serait probablement la solution la plus simple.

[1] Je ne le croirais pas du tout, il s'agit probablement plutôt d'un cas de personnes trop têtues et peu disposées à apprendre ou à faire un "travail supplémentaire".Peu importe combien de temps le contrôle des sources pourrait leur faire gagner lorsqu'ils doivent revenir aux versions précédentes ou que 2 personnes ont édité le même fichier.

rsync ne téléchargera que les différences.Je ne l'ai pas personnellement utilisé, mais Marc Pèlerin a écrit il y a longtemps sur le fait que même gère brillamment les différences binaires.

svn+rsync semble être une solution fantastique.Je devrai essayer ça à l'avenir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top