Python-Skript für lokale Backups mit rsync

In Gnu / Linux gibt es verschiedene Programme, um das Backup durchzuführen, aber ich persönlich mag einfache Dinge, weit entfernt von grafischen Oberflächen (die natürlich nichts auszusetzen haben, aber wenn ich es vermeiden kann, vermeide ich es).
Im Befehl rsync gibt es einen beeindruckenden Verbündeten von Backups, die wir oft vergessen haben. Es gibt genügend Optionen, um eine Kopie mit allen erforderlichen Anforderungen zu erstellen. computer-767784_640

Das folgende Python-Skript erstellt zu diesem Zweck Sicherungskopien. Sie werden sehen, dass es extrem einfach ist und selbst für diejenigen, die absolut keine Ahnung von dieser Sprache haben, das Hinzufügen einer Zeile für das Skript zum Synchronisieren eines neuen Verzeichnisses sofort erfolgt.
In meinem Computer verwende ich eine externe Festplatte, die ich IOmega_HDD genannt habe. In Ihrem Fall können Sie sie im Skript entsprechend Ihrem Fall umbenennen.
Eine andere Sache ist das Hinzufügen oder Entfernen von Verzeichnissen zur Kopie. Im selben Skript wie in der Kommentarzeile wird erklärt, wie es geht.
Um die Aufgabe zu automatisieren, können Sie crontab eine Zeile hinzufügen, die den Python-Interpreter und den Pfad enthält, in den Sie das Skript einfügen möchten. Ich hoffe es ist nützlich für dich.

Warnung: Der WordPress-Editor lässt keinen Abstand am Zeilenanfang zu, daher ist die erforderliche Einrückung im Skript verloren gegangen. Daher habe ich die Leerzeichen durch Punkte (.) ersetzt, die Sie mit einem Editor entfernen und durch Leerzeichen ersetzen müssen .

—————————————————————————————-
# -*- coding: utf-8 -*-
import os
ruta_usuario=os.getcwd()
ruta_volumen="/media/Iomega_HDD" #Modificar según nombre de disco externo
directorio_destino=ruta_volumen + "/" + "RsyncBackup"
try:
....if os.path.exists(directorio_destino):
........pass
....else:
........os.mkdir(directorio_destino,0777)
....directorios_origen=[] ....rutas_directorios_origen=[] ....#Se añaden los directorios para sincronizar
....directorios_origen.append("Documentos")
....directorios_origen.append("Imágenes")
....directorios_origen.append("Descargas")
....#Añadir aquí otros directorios que se deseen sincronizar
....#o eliminar de las líneas anteriores los que no se deseen
....for rutas in directorios_origen:
....rutas_directorios_origen.append(ruta_usuario + "/" + rutas)
....for rutas in rutas_directorios_origen:
....print "Sincronizando " + rutas + " con " + directorio_destino
....os.system("rsync -ahv --progress" + " " + rutas + " " + directorio_destino)
....print "Proceso terminado"
except OSError:
print "Ha ocurrido un error ¿está el disco externo listo?"
except:
print "Ha ocurrido un error"

---------------------------


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Matias sagte

    Hallo wie geht's dir?
    Ich mochte das Skript, sehr einfach.
    Nichts für ungut, ich habe einige Änderungen vorgenommen, um es einfacher und lesbarer zu machen, zusätzlich zur Unterstützung von Python 2 und 3 (derzeit kann es nur in Python 2 ausgeführt werden).

    Ich überlasse Ihnen den Link zu den 2 Versionen, falls Sie interessiert sind.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    dandutrich sagte

      Tolle Mods und ich bin froh, dass dir das Skript gefällt

  2.   Nifosio sagte

    Die Absicht wird geschätzt, aber das Ergebnis ist klebrig und Wurst.
    Meine 4-jährige Nichte ist in der Lage, ein intelligenteres und konfigurierbareres Skript zu erstellen als diese Kartoffel, die Sie hier eingestellt haben.

    Übrigens ist die Einrückung des Codes falsch, überprüfen Sie Ihre Schleifen und ich meine nicht die Haare

    1.    dandutrich sagte

      Das Skript funktioniert perfekt, ich benutze es schon lange und aufgrund der Anzahl der Personen, die es teilen, sollte es nicht so beschissen sein, wie Sie sagen. Vielleicht sollten Sie Ihre Nichte anrufen, um zu sehen, ob Sie alles richtig gestellt haben

    2.    tr sagte

      Hey, lerne zu schätzen und anstatt zu kritisieren, richtig, wenn du so viel prahlst.

      1.    dandutrich sagte

        Genau genommen hat Matias einige großartige Modifikationen vorgenommen. Natürlich kann das Skript verbessert werden, und darum geht es in der Welt der Zusammenarbeit, und genau das hat Matias zum Ausdruck gebracht. Es ist eine Schande, dass Einzelpersonen hier sind, um die gute Atmosphäre zu säuern, die herrschen sollte. Da sie.

    3.    abaddon so sagte

      Denken Sie, dass eine unhöfliche Kritik nützlich ist und dem Scrip nichts hinzufügt? BESSER SCHREIBEN SIE KEINEN VERDAMMTEN SCRIPT UND TEILEN SIE ES !!!!!!!

  3.   Ich weiß nicht sagte

    Hier noch eine Version: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Kommentieren Sie die Fehler, die Sie haben, ich werde es korrigieren (jetzt bin ich in Windows und konnte es nicht testen)

  4.   zetaka01 sagte

    Nun, ich benutze rsync direkt mit einem Shell-Skript, ohne Python zu verwenden.
    Ich habe eine Zeile für jedes Quell- und Zielverzeichnis eingefügt.
    Ich habe mehrere Skripte, abhängig von dem Gerät, auf dem ich die Kopie erstelle, in meinem Fall inkrementell.
    Zum Beispiel, um meine Bücher auf einen 128-MB-USB-Stick zu kopieren, der standardmäßig in installiert ist
    / media / zetaka01 / Sandisk128 Ich habe in das Skript LibrosAusb128.sh die folgende Zeile eingefügt:

    rsync -av –delete / home / zetaka01 / Books / media / zetaka01 / Sandisk128 /

    Wenn das Zielverzeichnis nicht vorhanden ist, erstellt es es für Sie und löscht aus dem Ziel, was sich nicht im Ursprung befindet, natürlich rekursiv.
    Ein Gruß.

  5.   zetaka01 sagte

    Ah, ein Fehler beim Kopieren / Einfügen und Löschen mit zwei Bindestrichen.

    un saludo

  6.   dandutrich sagte

    Möchten Sie eine grafische Oberfläche erstellen? Ich habe die Möglichkeiten von Tkinter und Tix gesehen, aber für die Kontrolle der Auswahl der Verzeichnisse ist Wx vielleicht besser

  7.   zetaka01 sagte

    Es gibt bereits eine grafische Oberfläche, die auf GTK basiert und grsync heißt.
    Ich verlasse den Link zu Wikipedia, https://en.wikipedia.org/wiki/Grsync
    Ein Gruß.

  8.   fernando sagte

    Hallo, alle miteinander. Das Drehbuch kann ein Wunder oder eine Einfachheit sein, die ich nicht kenne oder die mir egal ist, aber die Dinge können auf tausend Arten gesagt werden, und wenn sie gut gesagt werden können, warum sie dann falsch sagen? Trotzdem muss ich sagen, dass ich seit 2008 Linux-Benutzer bin und trotz all dieser Zeit nur langsam lerne und es mir schwer fällt, viele Dinge zu verstehen, einschließlich der Ausführung eines Skripts (ich weiß, dass es einfach ist, aber eines nicht nicht mehr geben). Installieren Sie Programme, indem Sie sie kompilieren usw. usw. Deshalb habe ich, als ich las, dass es eine Version mit einer grafischen Oberfläche gibt, diese Seite gesucht und gefunden, auf der Sie sogar alles finden, was Sie gekaut haben. Für die Unbeholfenen als Server lasse ich es hier. Grüße und vielen Dank für Ihre Mühe.
    http://www.opbyte.it/grsync/download.html

    1.    dandutrich sagte

      fernando, ohne jegliche Schärfe und wenn es Ihnen nichts ausmacht zu antworten, bin ich neugierig, warum Sie Gnu / Linux verwenden. Danke und viele Grüße

  9.   zetaka01 sagte

    Nun, eine grafische Oberfläche ist sehr benutzerfreundlich, bietet Ihnen jedoch nicht die Optionen, die Ihnen ein vollständiger Befehl bietet.
    Außerdem ist es nicht mein Fall, dass ich es nach Maß mache. Ein Skript, entweder Shell oder Python oder was auch immer Sie wollen, ermöglicht es Ihnen, es so zu programmieren, dass es ausgeführt wird, wann immer Sie wollen.
    Ah, in Ihrer Linux-Distribution sollten Sie rsync und grsync ohne Probleme in den Repositories haben.
    Ein Gruß.

  10.   zetaka01 sagte

    Ah Fernando, wenn Sie seit 2008 Linux verwenden und nicht wissen, wie man ein Skript ausführt, habe ich keine Worte.
    un saludo

  11.   Gonzalo Martinez sagte

    Pa sind alle Systemingenieure hier, die das Skript kritisieren, das jemand für die Zusammenarbeit macht, und ob er Konsole / Skript oder was auch immer verwendet?

    Wie viel Scheiße, um Gottes willen zu furzen.

    Ich verwalte Linux-Server seit 10 Jahren, und die Wahrheit ist, dass die elektronische Errichtung, alles mit Skripten zu tun, mir vor einiger Zeit vergangen ist, zum Beispiel um Bacula zu verwalten. Ich bevorzuge es, die grafische Oberfläche zu verwenden, als die Shell, um so zu tun, als ob ich es wäre wichtig, was wirklich ein kriminelles Mittel ist.

    Man muss produktiv sein, wenn sich jemand über die Benutzeroberfläche wohler fühlt, ist das Ergebnis wichtig, nicht wie man es macht.

    In meinem vorherigen Job leitete ich den IT-Bereich eines Unternehmens, und die Verantwortlichen baten ihn, etwas Bestimmtes zu tun. Ich war an dem Ergebnis interessiert. Er sagte nicht: «Konfigurieren Sie einen anderen vhost in Apache mit dem vi ohne Farbe in einem Terminal 30 × 20 ”, dass er es tut, wie er es am bequemsten macht, wenn der Typ es lieber so macht, per SFTP montiert und den Windows-Notizblock benutzt oder unseren Vater betet, war es mir egal, solange er habe es richtig gemacht.

    dandutrech, das Skript erfüllt sein Ziel, was das Wichtigste ist. Was ich jetzt ändern würde, ist, dass anstelle des Aufrufs des Befehls über die Shell plötzlich Python-librsync verwendet wird, eine Bibliothek zur Verwendung der rsync-Funktionen in Python .

    Dadurch erhalten Sie Portabilität. Das Skript kann in jeder Umgebung ausgeführt werden, sei es Linux, Windows oder OS X.

  12.   dandutrecht sagte

    Danke, Gonzalo. Ihr Vorschlag finde ich sehr gut und ich werde ihn in das Skript aufnehmen. ein Gruß