Installieren Sie git auf einem Server
cd /
git init
git add .
git commit -a -m "Yes, this is server"
Zeigen Sie /.git/
dann auf ein Netzwerklaufwerk (SAN, NFS, Samba, was auch immer) oder eine andere Festplatte. Aktualisieren Sie die Änderungen mit einem Cron-Job jede Stunde / jeden Tag usw. Das .git-Verzeichnis würde eine versionierte Kopie aller Serverdateien enthalten (mit Ausnahme der nutzlosen / komplizierten Dateien wie / proc, / dev usw.).
Für eine nicht-wichtigen Entwicklungs - Server , wo ich es nicht den Aufwand / Kosten wollen der Einstellung auf einem geeigneten Backup - System auf, und wo Backups nur der Einfachheit halber würde (IE wir nicht brauchen , um diesen Server zu sichern , aber es würde sparen Könnte dies eine gültige Backup-Lösung sein oder fällt sie einfach in einen Haufen Kacke?
Antworten:
Du bist keine dumme Person. Die Verwendung
git
als Sicherungsmechanismus kann attraktiv sein undgit
funktioniert trotz der Aussagen anderer problemlos mit Binärdateien. Lesen Sie diese Seite aus dem Git-Buch, um weitere Informationen zu diesem Thema zu erhalten. Grundsätzlich spieltgit
es keine Rolle, wie Ihre Dateien aussehen , da kein Delta-Speichermechanismus verwendet wird (aber das Dienstprogramm vongit diff
ist für Binärdateien mit einer Standardkonfiguration ziemlich niedrig).Das größte Problem bei der Verwendung
git
für Backups ist, dass die meisten Metadaten des Dateisystems nicht erhalten bleiben. Insbesondere zeichnetgit
nicht auf:Sie können dieses Problem lösen, indem Sie Tools schreiben, mit denen diese Informationen explizit in Ihrem Repository aufgezeichnet werden. Es kann jedoch schwierig sein, dies zu korrigieren.
Eine Google-Suche nach Git-Backup-Metadaten liefert eine Reihe von Ergebnissen, die lesenswert erscheinen (einschließlich einiger Tools, die bereits versuchen, die hier angesprochenen Probleme zu kompensieren).
etckeeper wurde zum Sichern entwickelt
/etc
und löst viele dieser Probleme.quelle
Ich habe es nicht benutzt, aber Sie könnten sich bup ansehen , ein auf git basierendes Backup-Tool.
quelle
Es kann eine gültige Backup-Lösung sein, auf dieser Idee basiert etckeeper. Behalten Sie jedoch die
.git
Verzeichnisberechtigungen im Auge, da ansonsten Pushing/etc/shadow
im.git
Verzeichnis lesbar sein kann .quelle
Während Sie dies technisch tun könnten, würde ich zwei Vorbehalte dagegen aussprechen:
1, Sie verwenden ein Versionskontrollsystem für Binärdaten. Sie verwenden es daher für etwas, für das es nicht entwickelt wurde.
2, Ich mache mir Sorgen um Ihren Entwicklungsprozess, wenn Sie keinen Prozess (Dokumentation oder automatisiert) zum Erstellen einer neuen Maschine haben. Was ist, wenn Sie einen Bus kaufen, wer weiß, was zu tun ist und was wichtig ist?
Notfallwiederherstellung ist wichtig, jedoch ist es besser, das Setup einer neuen Entwicklungsbox zu automatisieren (Skript), als nur alles zu sichern. Verwenden Sie git sicher für Ihr Skript / Ihre Dokumentation, aber nicht für jede Datei auf einem Computer.
quelle
Ich verwende git als Backup für mein Windows-System und es war unglaublich nützlich. Am Ende des Beitrags zeige ich die Skripts an, die ich zum Konfigurieren auf einem Windows-System verwende. Die Verwendung von Git als Backup für jedes System bietet zwei große Vorteile:
Fazit: Ein Git-Backup gibt Ihnen unglaublich viel Kontrolle darüber, wie Ihre Backups ablaufen.
Ich habe dies auf meinem Windows-System konfiguriert. Der erste Schritt besteht darin, das lokale Git-Repo zu erstellen, auf das Sie alle Ihre lokalen Daten übertragen. Ich empfehle die Verwendung einer lokalen zweiten Festplatte, aber die Verwendung derselben Festplatte wird funktionieren (aber es wird erwartet, dass Sie diese an eine entfernte Stelle verschieben oder auf andere Weise verschrauben, wenn die Festplatte ausfällt.)
Sie müssen zunächst cygwin (mit rsync) und git für Windows installieren: http://git-scm.com/download/win
Als nächstes erstellen Sie Ihr lokales Git-Repo (nur einmal ausführen):
init-repo.bat:
Als nächstes haben wir unseren Backup-Script-Wrapper, der regelmäßig von Windows Scheduler aufgerufen wird:
gbackup.vbs:
Als nächstes haben wir das Backup-Skript selbst, das der Wrapper aufruft:
gbackup.bat:
Wir haben die Datei exclude-from.txt, in der wir alle zu ignorierenden Dateien ablegen:
exclude-from.txt:
Sie müssen zu einem beliebigen Remote-Repository gehen und einen Initialisierungsschritt für dieses Repository ausführen. Sie können das Skript testen, indem Sie das Sicherungsskript ausführen. Wenn alles funktioniert, rufen Sie Windows Scheduler auf und richten Sie eine stündliche Sicherung auf die vbs-Datei. Danach haben Sie für jede Stunde einen Git-Verlauf Ihres Computers. Es ist äußerst praktisch - jeder löscht versehentlich einen Textabschnitt und vermisst ihn? Überprüfe einfach dein Git-Repository.
quelle
Nun, es ist keine schlechte Idee, aber ich denke, es gibt zwei rote Fahnen zu hissen:
... aber dennoch kann es ein gutes Backup für korruptionsbezogene Dinge sein. Oder wie Sie sagten, wenn sich der .git / -Ordner woanders befindet.
... Möglicherweise müssen Sie Ihren Cronjob anweisen, Tags hinzuzufügen, und dann sicherstellen, dass Commits, die nicht markiert sind, bereinigt werden.
quelle
rm -Rf /
uns einige Probleme bereiten würde. Unser derzeitiges Backup-System speichert die Daten für 2 Jahre oder 50 Versionen (je nachdem, welche Version zuletzt verwendet wird), sodass unser Backup ohnehin stetig zunimmt. Aber ich mag die Idee, Tags hinzuzufügen, wir könnten "tägliche", "wöchentliche" usw. Tags habenIch habe es nicht mit einem vollständigen System ausprobiert, aber ich verwende es für meine MySQL-Backups (mit der Option --skip-extended-insert) und es hat wirklich gut für mich funktioniert.
Sie werden Probleme mit binären Datendateien bekommen (deren gesamter Inhalt könnte und wird sich ändern) und Sie könnten Probleme damit haben, dass der
.git
Ordner wirklich groß wird. Ich würde empfehlen, eine.gitignore
Datei einzurichten und nur Textdateien zu sichern, von denen Sie wirklich wissen, dass Sie sie benötigen.quelle
Ich habe einmal eine Backup-Lösung entwickelt, die auf Subversion basiert. Es hat zwar ganz gut funktioniert (und git sollte noch besser funktionieren), aber ich denke, es gibt hier bessere Lösungen.
Ich halte rsnapshot für eines der besseren - wenn nicht das bessere. Mit einer guten Nutzung von Hardlink habe ich einen 300-GB-Dateiserver (mit einer halben Million Dateien) mit täglichen, wöchentlichen und monatlichen Backups, die bis zu einem Jahr zurückreichen. Insgesamt belegter Speicherplatz ist nur eine vollständige Kopie + der inkrementelle Teil jeder Sicherung, aber dank Hardlinks habe ich in jeder der Sicherungen eine vollständige "Live" -Verzeichnisstruktur. Mit anderen Worten, auf Dateien kann nicht nur unter daily.0 (der neuesten Sicherung) direkt zugegriffen werden, sondern auch unter daily.1 (gestern) oder week.2 (vor zwei Wochen) und so weiter.
Durch erneutes Freigeben des Sicherungsordners mit Samba können meine Benutzer die Datei aus Sicherungen abrufen, indem sie ihren PC einfach auf den Sicherungsserver verweisen.
Eine andere sehr gute Option ist rdiff-backup , aber da ich gerne Dateien habe, auf die ich immer zugreifen kann, indem ich einfach den Explorer auf \\ Servername öffne, war rsnapshot eine bessere Lösung für mich.
quelle
Ich hatte die gleiche Idee, um mit Git zu sichern, im Grunde, weil es versionierte Sicherungen ermöglicht. Dann habe ich rdiff-backup gesehen , das diese Funktionalität bietet (und vieles mehr). Es hat eine sehr schöne Benutzeroberfläche (siehe CLI-Optionen). Damit bin ich sehr zufrieden. Das
--remove-older-than 2W
ist ziemlich cool. Damit können Sie nur Versionen löschen, die älter als 2 Wochen sind.rdiff-backup
Speichert nur Unterschiede von Dateien.quelle
Ich bin extrem neu in Git, aber nicht standardmäßig lokal verzweigt und muss explizit auf Remote-Repositorys verschoben werden? Dies war eine unangenehme und unerwartete Überraschung. Will ich nicht, dass mein gesamtes lokales Repo auf dem Server gesichert wird? Lesen Sie das Git-Buch :
Für mich bedeutete dies, dass diese lokalen Zweige, wie auch andere Nicht-Git-Dateien auf meinem lokalen Computer, in Gefahr sind, verloren zu gehen, wenn sie nicht regelmäßig mit Nicht-Git-Mitteln gesichert werden. Ich mache das trotzdem, aber es hat meine Vermutungen über das Sichern von "Allem" in meinem Repo gebrochen. Ich würde es lieben, dies zu klären!
quelle
Ich fand, dass dies eine gute Methode für meine Entwicklungsboxen ist. Es ändert sie von etwas, das nur auf einem Bereitstellungsendpunkt gesichert werden muss.
Alle Konfigurations- und Paketinstallationsmanifeste werden in Puppet gespeichert, was eine einfache Neuverteilung und Aktualisierung der Konfiguration ermöglicht. Das Puppet-Verzeichnis wird mit git gesichert. Kickstart wird für die Erstbereitstellung verwendet.
Ich verwalte auch ein benutzerdefiniertes YUM-Repository für alle Pakete, die zur Zeit entwickelt werden. Dies hat den zusätzlichen Vorteil, dass alle Pakete, mit denen wir arbeiten, nicht nur als unbeaufsichtigte Binärdateien auf dem lokalen System verbleiben. Jemand ist nicht richtig vorgegangen.
quelle
Vielleicht möchten Sie sich bei bup on github umsehen, das dazu gedacht ist, git als Backup zu verwenden.
quelle
Es ist ein Ansatz, der verwendet wird, es macht Sinn.
Keepconf benutzt rsync und git für diesen Job, es ist ein Wrapper über diese Tools, um die Sache einfach zu halten.
Sie benötigen nur einen zentralen Server mit ssh-Schlüsseln, die für den Zugriff auf die Sicherungsserver konfiguriert sind, und ein paar Zeilen in der Konfigurationsdatei. Zum Beispiel ist dies meine eigene Datei, um alle / etc / und die installierten Debian-Pakete zu behalten:
Damit habe ich das rsync-Backup und das git-Commit.
quelle
Meine persönliche Meinung ist, dass dies grundsätzlich alles rückwärts ist. Sie verschieben die Dateien in eine Sicherungslösung, anstatt sie herauszuziehen.
Viel besser wäre es, zuerst die Konfiguration des Servers zu zentralisieren und dann mit so etwas wie einer Marionette herunterzufahren.
Das heißt, es könnte funktionieren, ich glaube nur nicht, dass es so gut wäre.
Versuchen Sie es mit backuppc - es ist ziemlich einfach einzurichten und ehrlich gesagt brillant.
quelle
Es würde etwas funktionieren, aber zwei Vorbehalte.
Dateizusätze werden beim Festschreiben nicht automatisch erfasst. Verwenden Sie --porcelean om git status, um neue Elemente zu finden, die vor dem Festschreiben hinzugefügt werden müssen.
Warum der Aufwand eines Remote-Mount für die .ssh? Es könnte zerbrechlich sein, aber Sie werden nicht wissen, dass es fehlgeschlagen ist. Verwenden Sie ein nacktes Repository für die Gegenseite mit einem normalen SSH-Schlüssel-Login. Solange das Repository leer ist und Sie nur von einer Quelle aus pushen, funktioniert es garantiert ohne Zusammenführung.
quelle