Script Python per backup locali con rsync

In Gnu / Linux esistono diversi programmi per eseguire il backup ma personalmente mi piacciono le cose semplici, lontane dalle interfacce grafiche (che non hanno niente di sbagliato, ovviamente, ma se posso evitare di usarlo, evito).
Nel comando rsync c'è un formidabile alleato di backup che spesso ci dimentichiamo di fare. Ha abbastanza opzioni per fare una copia con tutti i requisiti necessari. computer 767784_640

Il seguente script python crea copie di backup per questo scopo. Vedrai che è estremamente semplice e anche per chi non ha assolutamente idea di questo linguaggio, aggiungere una riga per lo script per sincronizzare una nuova directory è immediato.
Nella mia macchina utilizzo un hard disk esterno che ho chiamato IOmega_HDD, nel tuo caso puoi rinominarlo nello script secondo il tuo caso.
Un'altra cosa è aggiungere o rimuovere directory dalla copia. Nello stesso script della riga di commento viene spiegato come farlo.
Per automatizzare l'attività puoi aggiungere una riga a crontab contenente l'interprete Python e il percorso in cui vuoi mettere lo script. Spero ti sia utile.

Attenzione: l'editor di wordpress non consente una spaziatura all'inizio della riga, quindi il rientro necessario nello script è stato perso, quindi ho sostituito gli spazi vuoti con punti (.) che devi eliminare con un editor e sostituire con spazi.

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

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


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Matias suddetto

    Ciao, come stai?
    Mi è piaciuta la sceneggiatura, molto semplice.
    Senza offesa, ho apportato alcune modifiche per renderlo più semplice e leggibile, oltre a supportare Python 2 e 3 (attualmente potrebbe essere eseguito solo in Python 2)

    Vi lascio il link con le 2 versioni, nel caso foste interessati.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    dandutrich suddetto

      Grandi mod e sono contento che ti piaccia la sceneggiatura

  2.   niphosio suddetto

    L'intenzione è apprezzata, ma il risultato è di cattivo gusto e salsiccia.
    Mia nipote di 4 anni è in grado di creare uno script più intelligente e configurabile di questa patata che hai messo qui.

    A proposito, il rientro del codice è sbagliato, controlla i tuoi loop e non intendo quelli dei capelli

    1.    dandutrich suddetto

      La sceneggiatura funziona perfettamente, la uso da molto tempo e, infatti, a causa del numero di persone che la condividono, non dovrebbe essere così schifosa come dici tu. Forse dovresti chiamare tua nipote per vedere se hai messo tutto correttamente

    2.    tr suddetto

      Ehi, impara a valorizzare e invece di criticare, correggi, se ti vanti così tanto.

      1.    dandutrich suddetto

        Esattamente tr, Matias ha apportato alcune grandi modifiche. Certamente la sceneggiatura può essere migliorata ed è di questo che si tratta nel mondo della collaborazione ed è quello che ha espresso Matias. È un peccato che le persone siano qui intorno ad inacidire la buona atmosfera che dovrebbe prevalere. Là loro.

    3.    abbandono s suddetto

      Pensi che una critica sgarbata sia di qualche utilità e che non aggiunga nulla al copione?

  3.   Non so suddetto

    Ecco un'altra versione: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Commenta gli errori che ho, lo correggerò (ora sono in Windows e non ho potuto testarlo).

  4.   zetaka01 suddetto

    Bene, io uso rsync direttamente con uno script di shell, senza usare python.
    Metto una riga per ogni directory di origine e destinazione.
    Ho diversi script a seconda del dispositivo su cui effettuo la copia, nel mio caso incrementale.
    Ad esempio, per copiare i miei libri su un USB da 128 MB installato per impostazione predefinita in
    / media / zetaka01 / Sandisk128 Ho inserito nello script LibrosAusb128.sh la seguente riga:

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

    Se la directory di destinazione non esiste, la crea per te e cancella dalla destinazione ciò che non è nell'origine, naturalmente in modo ricorsivo.
    Saluti.

  5.   zetaka01 suddetto

    Ah, un errore di copia / incolla-eliminazione, con due trattini.

    saluti

  6.   dandutrich suddetto

    Vuoi creare un'interfaccia grafica? Ho visto le possibilità di Tkinter e Tix ma per il controllo della scelta delle directory forse Wx è migliore

  7.   zetaka01 suddetto

    Esiste già un'interfaccia grafica basata su GTK, si chiama grsync.
    Lascio il link a Wikipedia, https://en.wikipedia.org/wiki/Grsync
    Saluti.

  8.   fernando suddetto

    Ciao a tutti. La sceneggiatura può essere una meraviglia o una semplicità che non conosco né mi interessa ma le cose si possono dire in mille modi e quando si possono dire bene, perché dirle male? Detto questo, devo dire che sono un utente Linux dal 2008 e nonostante tutto questo tempo sono lento nell'apprendere e ho difficoltà a capire molte cose incluso come eseguire uno script (so che è facile ma non se ne dà più). installare programmi compilandoli ecc. ecc. Ecco perché quando ho letto che esiste una versione con un'interfaccia grafica, ho cercato e trovato questa pagina dove masticano persino tutto. Per i maldestri come server lo lascio qui. Saluti e grazie per il tuo impegno.
    http://www.opbyte.it/grsync/download.html

    1.    dandutrich suddetto

      fernando, senza acrimonia e se non ti dispiace rispondere, sono curioso di sapere perché usi Gnu / Linux. grazie e distinti saluti

  9.   zetaka01 suddetto

    Bene, un'interfaccia grafica è molto amichevole ma non ti dà le opzioni che ti offre un comando completo.
    Inoltre, non è il mio caso che lo faccia su misura, uno script, shell o python o qualunque cosa tu voglia, ti permette di programmarlo per essere eseguito quando vuoi.
    Ah, nella tua distribuzione Linux dovresti avere rsync e grsync senza problemi nei repository.
    Saluti.

  10.   zetaka01 suddetto

    Ah Fernando, se usi Linux dal 2008 e non sai come eseguire uno script, non ho parole.
    saluti

  11.   Gonzalo martinez suddetto

    Pa sono tutti ingegneri di sistema qui che criticano lo script che qualcuno fa per collaborare, e se usare console / script o qualsiasi altra cosa?

    Quanta merda scoreggiare per l'amor di Dio.

    Gestisco server Linux da 10 anni, e la verità è che l'erezione elettronica di fare tutto con gli script mi ​​è passata tempo fa, ad esempio, per amministrare Bacula, preferisco usare l'interfaccia grafica piuttosto che la shell per fingere di essere importante, che è davvero un mezzo criminale .

    Uno deve essere produttivo, se qualcuno si sente più a suo agio a farlo tramite l'interfaccia, bene per lui, ciò che conta è il risultato, non come lo fai.

    Nel mio precedente lavoro ho diretto l'area IT di un'azienda, e gli incaricati gli hanno chiesto di fare qualcosa di specifico, mi interessava il risultato, non ha detto «Configura un altro vhost in apache, usando il vi senza colore in un terminale 30 × 20 ”, che lo fa come gli è più comodo, se il ragazzo ha preferito farlo così, montando da SFTP e usando il blocco note di Windows, o pregando nostro Padre, non mi importava finché lo faceva bene.

    dandutrech, lo script soddisfa il suo obiettivo, che è la cosa importante, ora quello che cambierei è che invece di invocare il comando dalla shell, improvvisamente userebbe Python-librsync, che è una libreria per usare le funzioni rsync all'interno Pitone.

    Con ciò si ottiene la portabilità, lo script viene eseguito in qualsiasi ambiente, sia esso Linux, Windows o OS X.

  12.   Dan Dutrech suddetto

    Grazie, Gonzalo. Il tuo suggerimento penso sia molto buono e lo inserirò nella sceneggiatura. un saluto