Σενάριο Python για τοπικά αντίγραφα ασφαλείας με rsync

Στο Gnu / Linux υπάρχουν διαφορετικά προγράμματα για την εκτέλεση του αντιγράφου ασφαλείας, αλλά προσωπικά μου αρέσουν απλά πράγματα, μακριά από γραφικές διεπαφές (που δεν έχουν τίποτα λάθος, φυσικά, αλλά αν μπορώ να αποφύγω τη χρήση του, αποφεύγω).
Στην εντολή rsync υπάρχει ένας τρομερός σύμμαχος αντιγράφων ασφαλείας που συχνά ξεχνάμε να κάνουμε. Έχει αρκετές επιλογές για να δημιουργήσει ένα αντίγραφο με όλες τις απαραίτητες απαιτήσεις. υπολογιστή-767784_640

Το ακόλουθο σενάριο python δημιουργεί αντίγραφα ασφαλείας για το σκοπό αυτό. Θα δείτε ότι είναι εξαιρετικά απλό και ακόμη και για όσους δεν έχουν απολύτως ιδέα για αυτήν τη γλώσσα, η προσθήκη μιας γραμμής για το σενάριο για συγχρονισμό ενός νέου καταλόγου είναι άμεση.
Στο μηχάνημά μου χρησιμοποιώ έναν εξωτερικό σκληρό δίσκο που έχω ονομάσει IOmega_HDD, στην περίπτωσή σας μπορείτε να το μετονομάσετε στο σενάριο ανάλογα με την περίπτωσή σας.
Ένα άλλο πράγμα είναι να προσθέσετε ή να αφαιρέσετε καταλόγους από το αντίγραφο. Στο ίδιο σενάριο με τη γραμμή σχολίων εξηγείται πώς να το κάνουμε.
Για να αυτοματοποιήσετε την εργασία, μπορείτε να προσθέσετε μια γραμμή στο crontab που περιέχει τον διερμηνέα python και τη διαδρομή όπου θέλετε να βάλετε το σενάριο. Ελπίζω να είναι χρήσιμο σε εσάς.

Ανακοπή: ο επεξεργαστής wordpress δεν επιτρέπει ένα κενό στην αρχή της γραμμής, επομένως η απαραίτητη εσοχή στο σενάριο έχει χαθεί, επομένως έχω αντικαταστήσει τα κενά κενά με σημεία (.) που πρέπει να εξαλείψετε με έναν επεξεργαστή και να αντικαταστήσετε με κενά .

-------------------------------
# -*- 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"

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


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Matias dijo

    Γεια πώς είσαι?
    Μου άρεσε το σενάριο, πολύ απλό.
    Χωρίς παράβαση, έκανα κάποιες τροποποιήσεις για να το κάνω απλούστερο και πιο ευανάγνωστο, εκτός από την υποστήριξη των Python 2 και 3 (επί του παρόντος θα μπορούσε να εκτελεστεί μόνο στο Python 2)

    Σας αφήνω τον σύνδεσμο με τις 2 εκδόσεις, σε περίπτωση που σας ενδιαφέρει.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    καιντουτρέχ dijo

      Υπέροχα mods και χαίρομαι που σας αρέσει το σενάριο

  2.   niphosio dijo

    Η πρόθεση εκτιμάται, αλλά το αποτέλεσμα είναι κολλώδες και λουκάνικο.
    Η 4χρονη ανιψιά μου είναι ικανή να δημιουργήσει ένα πιο έξυπνο και διαμορφώσιμο σενάριο από αυτή την πατάτα που έχετε βάλει εδώ.

    Παρεμπιπτόντως, η εσοχή του κωδικού είναι λάθος, ελέγξτε τους βρόχους σας και δεν εννοώ τα μαλλιά

    1.    καιντουτρέχ dijo

      Το σενάριο λειτουργεί τέλεια, το χρησιμοποιώ για μεγάλο χρονικό διάστημα και, στην πραγματικότητα, λόγω του αριθμού των ατόμων που το μοιράζονται, δεν θα πρέπει να είναι τόσο ασταθές όσο λέτε. Ίσως πρέπει να καλέσετε την ανιψιά σας για να δείτε αν έχετε ρυθμίσει τα πάντα σωστά

    2.    tr dijo

      Γεια σου, μάθε να εκτιμάς και αντί να επικρίνεις, σωστά, αν καυχιέσαι τόσο πολύ.

      1.    καιντουτρέχ dijo

        Ακριβώς, ο Matias έχει κάνει μερικές εξαιρετικές τροποποιήσεις. Σίγουρα το σενάριο μπορεί να βελτιωθεί και αυτό είναι για τον κόσμο της συνεργασίας και έτσι το έχει εκφράσει ο Matias. Είναι κρίμα που τα άτομα βρίσκονται εδώ για να βρουν την καλή ατμόσφαιρα που πρέπει να επικρατήσει. Εκεί αυτοί.

    3.    abaddon s dijo

      Πιστεύετε ότι μια αγενής κριτική είναι χρήσιμη και ότι δεν συνεισφέρει τίποτα στο scrip; ΚΑΛΥΤΕΡΗ ΜΗΝ ΓΡΑΨΕΤΕ ΤΟ ΠΡΑΓΜΑΤΙΚΟ ΓΡΑΜΜΑ ΚΑΙ ΜΟΙΡΑΣΤΕ ΤΟ !!!!!!!

  3.   Δεν ξέρω dijo

    Εδώ μια άλλη έκδοση: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Σχολιάστε τα λάθη που έχω, θα το διορθώσω (τώρα είμαι στα παράθυρα και δεν μπορούσα να το δοκιμάσω).

  4.   zetaka01 dijo

    Λοιπόν, χρησιμοποιώ το rsync απευθείας με ένα σενάριο κελύφους, χωρίς να χρησιμοποιώ python.
    Έβαλα μια γραμμή για κάθε κατάλογο πηγής και προορισμού.
    Έχω διάφορα σενάρια ανάλογα με τη συσκευή στην οποία δημιουργώ το αντίγραφο, στην περίπτωσή μου σταδιακά.
    Για παράδειγμα, για να αντιγράψω τα βιβλία μου σε ένα 128MB usb που είναι εγκατεστημένο από προεπιλογή στο
    / media / zetaka01 / Sandisk128 Έβαλα το σενάριο LibrosAusb128.sh την ακόλουθη γραμμή:

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

    Εάν ο κατάλογος προορισμών δεν υπάρχει, τον δημιουργεί για εσάς και διαγράφει από τον προορισμό αυτό που δεν είναι στην προέλευση, φυσικά αναδρομικά.
    Ένα χαιρετισμό.

  5.   zetaka01 dijo

    Α, ένα σφάλμα αντιγραφής / επικόλλησης - διαγραφής, με δύο ενωτικά.

    χαιρετίσματα

  6.   καιντουτρέχ dijo

    Θέλετε να δημιουργήσετε μια γραφική διεπαφή; Έχω δει τις δυνατότητες του Tkinter και του Tix, αλλά για τον έλεγχο της επιλογής των καταλόγων ίσως το Wx είναι καλύτερο

  7.   zetaka01 dijo

    Υπάρχει ήδη μια γραφική διεπαφή που βασίζεται στο GTK, ονομάζεται grsync.
    Αφήνω τον σύνδεσμο για τη Βικιπαίδεια, https://en.wikipedia.org/wiki/Grsync
    Ένα χαιρετισμό.

  8.   Fernando dijo

    Γεια σε όλους. Το σενάριο μπορεί να είναι ένα θαύμα ή μια απλότητα, δεν ξέρω ούτε νοιάζομαι, αλλά τα πράγματα μπορούν να ειπωθούν με χίλιους τρόπους και όταν μπορούν να ειπωθούν καλά, γιατί να τα λένε λάθος; Τούτου λεχθέντος, πρέπει να πω ότι είμαι χρήστης Linux από το 2008 και παρόλο που τόσο καιρό είμαι αργός να μάθω και είναι πολύ δύσκολο για μένα να καταλάβω πολλά πράγματα, συμπεριλαμβανομένου του τρόπου εκτέλεσης ενός σεναρίου (εύκολο ξέρω, αλλά ένα δεν δίνει περισσότερα). εγκαταστήστε προγράμματα με τη σύνταξη τους κ.λπ. κ.λπ. Γι 'αυτό όταν διάβασα ότι υπάρχει μια έκδοση με γραφική διεπαφή, κοίταξα και βρήκα αυτήν τη σελίδα όπου μασούν τα πάντα. Για τον αδέξια ως διακομιστή το αφήνω εδώ. Χαιρετίσματα και ευχαριστώ για την προσπάθειά σας.
    http://www.opbyte.it/grsync/download.html

    1.    καιντουτρέχ dijo

      fernando, χωρίς καμιά ακρίβεια και αν δεν σας πειράζει να απαντήσετε, είμαι περίεργος να μάθω γιατί χρησιμοποιείτε το Gnu / Linux. Σε ευχαριστώ και θερμούς χαιρετισμούς

  9.   zetaka01 dijo

    Λοιπόν, μια γραφική διεπαφή είναι πολύ φιλική, αλλά δεν σας δίνει τις επιλογές που σας δίνει μια πλήρης εντολή.
    Επίσης, δεν είναι δική μου περίπτωση που το κάνω για να μετρήσω, ένα σενάριο, είτε πρόκειται για κέλυφος ή πύθωνα ή ό, τι θέλετε, σας επιτρέπει να προγραμματίσετε να εκτελείται όποτε θέλετε.
    Α, στη διανομή linux θα πρέπει να έχετε rsync και grsync χωρίς προβλήματα στα αποθετήρια.
    Ένα χαιρετισμό.

  10.   zetaka01 dijo

    Αχ Φερνάντο, αν χρησιμοποιείτε το linux από το 2008 και δεν ξέρετε πώς να εκτελέσετε ένα σενάριο, δεν έχω λόγια.
    χαιρετίσματα

  11.   Gonzalo martinez dijo

    Είναι όλοι μηχανικοί συστημάτων εδώ που ασκούν κριτική στο σενάριο που κάποιος κάνει για να συνεργαστεί και αν χρησιμοποιεί κονσόλα / σενάριο ή οτιδήποτε άλλο;

    Πόσο σκατά για να χτυπήσει για χάρη του Θεού.

    Διαχειρίζομαι διακομιστές Linux για 10 χρόνια και η αλήθεια είναι ότι η ηλεκτρονική ανέγερση να κάνω τα πάντα με σενάρια με πέρασε πριν από λίγο, για παράδειγμα, για τη διαχείριση του Bacula, προτιμώ να χρησιμοποιώ τη γραφική διεπαφή από το κέλυφος για να προσποιείται ότι είναι σημαντικό, πράγμα που είναι πραγματικά εγκληματικό μέσο.

    Κάποιος πρέπει να είναι παραγωγικός, εάν κάποιος νιώθει πιο άνετα να το κάνει μέσω της διεπαφής, καλά για αυτόν, αυτό που έχει σημασία είναι το αποτέλεσμα, όχι πώς το κάνετε.

    Στην προηγούμενη δουλειά μου, διευθύνω την περιοχή πληροφορικής μιας εταιρείας και οι υπεύθυνοι του ζήτησαν να κάνει κάτι συγκεκριμένο, με ενδιέφερε το αποτέλεσμα, δεν είπε «Διαμόρφωση άλλου vhost στο apache, χρησιμοποιώντας το vi χωρίς χρώμα σε ένα τερματικό 30 × 20 ", ότι το κάνει όσο είναι πιο άνετο, αν ο τύπος προτιμούσε να το κάνει έτσι, να ανεβαίνει στο SFTP και να χρησιμοποιεί το σημειωματάριο των Windows ή να προσεύχεται τον Πατέρα μας, δεν με νοιάζει όσο το έκανε σωστά.

    dandutrech, το σενάριο εκπληρώνει το στόχο του, το οποίο είναι το σημαντικό πράγμα, τώρα που θα άλλαζα είναι ότι αντί να επικαλούμε την εντολή από το κέλυφος, ξαφνικά θα χρησιμοποιούσε το Python-librsync, το οποίο είναι μια βιβλιοθήκη για τη χρήση των λειτουργιών rsync μέσα Πύθων.

    Με αυτό κερδίζετε φορητότητα, το σενάριο εκτελείται σε οποιοδήποτε περιβάλλον, είτε πρόκειται για Linux, Windows ή OS X.

  12.   dandutrecht dijo

    Ευχαριστώ, Γκονζάλο. Η πρότασή σας νομίζω ότι είναι πολύ καλή και θα το βάλω στο σενάριο. ένας χαιρετισμός