Sur un serveur, installez git
cd /
git init
git add .
git commit -a -m "Yes, this is server"
Ensuite, /.git/
pointez sur un lecteur réseau (SAN, NFS, Samba ou autre) ou un autre disque. Utilisez un travail cron toutes les heures / tous les jours, etc. pour mettre à jour les modifications. Le répertoire .git contiendrait une copie versionnée de tous les fichiers du serveur (à l'exception des fichiers inutiles / compliqués comme / proc, / dev, etc.)
Pour un serveur de développement non important pour lequel je ne veux pas avoir la peine de le configurer sur un système de sauvegarde approprié, et où les sauvegardes seraient uniquement commodes (IE, nous n'avons pas besoin de sauvegarder ce serveur, mais cela économiserait Cela pourrait-il être une solution de sauvegarde valide ou tombera-t-il dans un gros tas de caca?
Réponses:
Vous n'êtes pas une personne stupide. Utiliser
git
comme mécanisme de sauvegarde peut être intéressant, et malgré ce que d’autres ont dit,git
fonctionne très bien avec les fichiers binaires. Lisez cette page du livre Git pour plus d’informations sur ce sujet. En fait, depuisgit
est de ne pas utiliser un mécanisme de stockage du delta, il ne se soucie pas vraiment ce que vos fichiers ressemblent (mais l'utilitégit diff
est assez faible pour les fichiers binaires avec une configuration de stock).Le plus gros problème de l'utilisation
git
de la sauvegarde est qu'elle ne conserve pas la plupart des métadonnées du système de fichiers. Plus précisément,git
n'enregistre pas:Vous pouvez résoudre ce problème en écrivant des outils pour enregistrer ces informations de manière explicite dans votre référentiel, mais il peut être délicat de les obtenir correctement.
Une recherche Google sur les métadonnées de sauvegarde git donne un certain nombre de résultats qui méritent d'être lus (y compris des outils qui tentent déjà de compenser les problèmes que j'ai évoqués ici).
etckeeper a été développé pour la sauvegarde
/etc
et résout beaucoup de ces problèmes.la source
Je ne l'ai pas utilisé, mais vous pouvez regarder bup, un outil de sauvegarde basé sur git.
la source
Cela peut être une solution de sauvegarde valide, etckeeper est basé sur cette idée. Mais gardez un œil sur les
.git
autorisations du répertoire, sinon vous/etc/shadow
pourrez lire le.git
répertoire dans le répertoire.la source
Bien que techniquement, vous puissiez le faire, je mettrais deux réserves à son encontre:
1, vous utilisez un système de contrôle de version source pour les données binaires. Vous l'utilisez donc pour quelque chose pour lequel il n'a pas été conçu.
2, je m'inquiète de votre processus de développement si vous ne disposez pas d'un processus (documentation ou automatisé) pour la construction d'une nouvelle machine. Et si vous deviez acheter un bus, qui saurait quoi faire et ce qui était important?
La reprise après sinistre est importante, mais il est préférable d’automatiser (par script) la configuration d’un nouveau boîtier de développement plutôt que de tout sauvegarder. Utilisez bien git pour votre script / documentation mais pas pour tous les fichiers sur un ordinateur.
la source
J'utilise git comme sauvegarde pour mon système Windows, et cela a été incroyablement utile. Au bas de l'article, je montre les scripts que j'utilise pour configurer sur un système Windows. Utiliser git en tant que sauvegarde pour n’importe quel système offre 2 grands avantages:
En bout de ligne: une sauvegarde git vous donne une quantité incroyable de puissance pour contrôler le déroulement de vos sauvegardes.
Je l'ai configuré sur mon système Windows. La première étape consiste à créer le dépôt git local dans lequel vous allez valider toutes vos données locales. Je recommande d'utiliser un deuxième disque dur local, mais utiliser le même disque dur fonctionnera correctement (mais on s'attend à ce que vous le poussiez quelque part à distance, ou sinon votre vissé si le disque dur meurt.)
Vous devez d’abord installer cygwin (avec rsync), ainsi que git pour Windows: http://git-scm.com/download/win
Ensuite, créez votre dépôt Git local (n’exécutez qu’une seule fois):
init-repo.bat:
Ensuite, nous avons notre wrapper de script de sauvegarde, qui sera appelé régulièrement par le planificateur Windows:
gbackup.vbs:
Ensuite, nous avons le script de sauvegarde lui-même que le wrapper appelle:
gbackup.bat:
Nous avons le fichier exclude-from.txt, où nous mettons tous les fichiers à ignorer:
exclude-from.txt:
Vous devrez aller dans un dépôt distant et faire un 'git init --bare' dessus. Vous pouvez tester le script en exécutant le script de sauvegarde. En supposant que tout fonctionne, accédez au planificateur Windows et pointez une sauvegarde toutes les heures vers le fichier vbs. Après cela, vous aurez un historique git de votre ordinateur pour chaque heure. C'est extrêmement pratique - chaque fois accidentellement supprimer une section de texte et le manquer? Il suffit de vérifier votre référentiel git.
la source
Ce n’est pas une mauvaise idée, mais je pense qu’il faut lever deux drapeaux rouges:
... mais cela peut quand même être une bonne sauvegarde pour les problèmes liés à la corruption. Ou comme vous l'avez dit, si le dossier .git / est ailleurs.
... Vous devrez donc peut-être demander à votre cronjob d'ajouter des balises, puis assurez-vous que les commits qui ne sont pas étiquetés seront nettoyés.
la source
rm -Rf /
soit source de problèmes. Notre système de sauvegarde actuel conserve les données pendant 2 ans ou 50 versions (selon la dernière éventualité), de sorte que notre sauvegarde augmente constamment. Mais j'aime bien l'idée d'ajouter des tags, nous pourrions avoir des tags "quotidien", "hebdomadaire", etc.Je ne l'ai pas essayé avec un système complet, mais je l'utilise pour mes sauvegardes MySQL (avec l'option --skip-extended-insert) et cela a vraiment bien fonctionné pour moi.
Vous allez rencontrer des problèmes avec les fichiers de données binaires (tout leur contenu peut et va changer) et vous pourriez avoir des problèmes avec le fait que le
.git
dossier devienne vraiment volumineux. Je vous recommande de configurer un.gitignore
fichier et de ne sauvegarder que les fichiers texte dont vous savez vraiment qu'il vous faut.la source
Une fois, j'ai développé une solution de sauvegarde basée sur la subversion. Même si cela a très bien fonctionné (et que ça devrait fonctionner encore mieux), je pense qu'il existe de meilleures solutions ici.
Je considère rsnapshot comme l’un des meilleurs, sinon le meilleur. Grâce à une bonne utilisation du lien physique, j’ai un serveur de fichiers de 300 Go (avec un demi-million de fichiers) avec une sauvegarde quotidienne, hebdomadaire et mensuelle pouvant aller jusqu’à un an. L'espace disque total utilisé ne représente qu'une copie complète + la partie incrémentielle de chaque sauvegarde, mais grâce aux liens physiques, j'ai une structure de répertoires "en direct" complète dans chacune des sauvegardes. En d'autres termes, les fichiers sont directement accessibles non seulement sous daily.0 (la sauvegarde la plus récente), mais même dans daily.1 (yestarday) ou hebdomadairement.2 (il y a deux semaines), etc.
En partageant le dossier de sauvegarde avec Samba, mes utilisateurs peuvent extraire le fichier des sauvegardes simplement en pointant leur PC vers le serveur de sauvegarde. Rdiff-backup
est une autre très bonne option , mais comme j'aime avoir des fichiers toujours accessibles en sélectionnant simplement l'explorateur sous \\ nom_serveur, rsnapshot était une meilleure solution pour moi.
la source
J'ai eu la même idée de sauvegarder avec git, essentiellement parce que cela permet des sauvegardes versionnées. Ensuite, j'ai vu rdiff-backup , qui fournit cette fonctionnalité (et bien plus encore). Il a une très belle interface utilisateur (regardez les options de la CLI). Je suis assez content de ça. C'est
--remove-older-than 2W
plutôt cool. Il vous permet simplement de supprimer les versions de plus de 2 semaines.rdiff-backup
ne stocke que les diffs de fichiers.la source
Je suis extrêmement nouveau pour git, mais les branches ne sont pas locales par défaut, et doivent être explicitement poussées vers des référentiels distants? Ce fut une surprise désagréable et inattendue. Après tout, est-ce que je ne veux pas que tous mes dépôts locaux soient «sauvegardés» sur le serveur? Lire le livre git :
Pour moi, cela signifiait que ces branches locales, comme d'autres fichiers non-git sur ma machine locale, risquaient d'être perdues si elles n'étaient pas sauvegardées régulièrement par des moyens non-git. Je le fais quand même, mais cela a brisé mes hypothèses sur le fait de tout sauvegarder dans mon dépôt. J'aimerais des éclaircissements à ce sujet!
la source
J'ai trouvé que c'était une bonne méthodologie pour mes boites de développement. Cela les élimine de quelque chose qui doit être sauvegardé à un seul noeud final de déploiement.
Tous les manifestes d'installation et de configuration de la configuration sont stockés dans Puppet, ce qui facilite le redéploiement et les mises à jour de la configuration. Le répertoire Puppet est sauvegardé avec git. Kickstart est utilisé pour effectuer le déploiement initial.
Je conserve également un référentiel YUM personnalisé pour tous les packages en cours de développement. Cela présente l’avantage supplémentaire que les paquets avec lesquels nous travaillons ne sont pas simplement laissés sous la forme de fichiers binaires non surveillés sur le système local - si cela se produit et que les fichiers sont bien archivés. Quelqu'un n'a pas suivi la procédure appropriée.
la source
Vous voudrez peut-être jeter un œil sur bup sur github, qui a été conçu pour servir l’utilisation de git pour la sauvegarde.
la source
C'est une approche qui est utilisée, c'est logique.
Keepconf utilise rsync et git pour ce travail, c’est un wrapper sur cet outil pour garder la chose facile.
Vous avez seulement besoin d'un serveur central avec des clés ssh configurées pour accéder aux serveurs de sauvegarde et de quelques lignes dans le fichier de configuration. Par exemple, c’est mon propre fichier pour garder tous les fichiers / etc / et les paquets debian installés:
Avec cela, j'ai la sauvegarde rsync et le commit git.
la source
Mon opinion personnelle est que tout cela est fondamentalement à l'envers. Vous introduisez les fichiers dans une solution de sauvegarde plutôt que de les extraire.
Il serait bien préférable de commencer par centraliser la configuration du serveur, puis de la baisser, en utilisant quelque chose comme une marionnette.
Cela dit, cela peut marcher, je ne pense tout simplement pas que ce serait si bon.
Essayez de regarder dans backuppc - il est assez facile à installer et est franchement brillant.
la source
Cela fonctionnerait un peu, mais deux mises en garde.
Les ajouts de fichiers ne seront pas automatiquement pris en compte lors de la validation. Utilisez --porcelean om git status pour rechercher de nouveaux éléments à ajouter avant d’effectuer le commit.
Pourquoi le problème d'un montage distant pour le .ssh? S'il est fragile, vous ne saurez pas qu'il a échoué. Utilisez un référentiel nu pour l'extrémité distante avec une connexion par clé ssh normale. Tant que le référentiel est nu et que vous ne poussez que depuis une source, il est garanti que votre travail fonctionnera sans fusion.
la source