Script Python pentru backup-uri locale cu rsync

În Gnu / Linux există diferite programe pentru efectuarea copiei de rezervă, dar personal îmi plac lucrurile simple, departe de interfețele grafice (care nu au nimic greșit, desigur, dar dacă pot evita să o folosesc, evit).
În comanda rsync există un aliat redutabil al copiilor de rezervă pe care adesea uităm să le facem. Are suficiente opțiuni pentru a face o copie cu toate cerințele necesare. calculator-767784_640

Următorul script python face copii de rezervă în acest scop. Veți vedea că este extrem de simplu și chiar și pentru cei care nu au absolut nicio idee despre acest limbaj, adăugarea unei linii pentru script pentru sincronizarea unui nou director este imediată.
În aparatul meu folosesc un hard disk extern pe care l-am numit IOmega_HDD, în cazul dvs. îl puteți redenumi în script în funcție de cazul dvs.
Un alt lucru este să adăugați sau să eliminați directoare din copie. În același script ca linia de comentarii, este explicat cum să o faceți.
Pentru a automatiza sarcina, puteți adăuga o linie în crontab care conține interpretul python și calea în care doriți să puneți scriptul. Sper să vă fie de folos.

Avertisment: editorul wordpress nu permite o spațiere la începutul liniei, astfel indentarea necesară din script a fost pierdută, așa că am înlocuit spațiile goale cu puncte (.) pe care trebuie să le eliminați cu un editor și să le înlocuiți cu spații.

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

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


Conținutul articolului respectă principiile noastre de etică editorială. Pentru a raporta o eroare, faceți clic pe aici.

18 comentarii, lasă-le pe ale tale

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Matias el a spus

    Salut ce mai faci?
    Mi-a plăcut scenariul, foarte simplu.
    Fără supărare, am făcut câteva modificări pentru a o face mai simplă și mai ușor de citit, în plus față de suportul Python 2 și 3 (în prezent, acesta ar putea fi rulat doar în Python 2)

    Vă las linkul cu cele 2 versiuni, în caz că sunteți interesat.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    dandutrech el a spus

      Moduri grozave și mă bucur că vă place scenariul

  2.   niphosio el a spus

    Intenția este apreciată, dar rezultatul este lipicios și cârnați.
    Nepoata mea de 4 ani este capabilă să facă un script mai inteligent și configurabil decât acest cartof pe care l-ați pus aici.

    Apropo, indentarea codului este greșită, verificați-vă buclele și nu mă refer la cele de păr

    1.    dandutrech el a spus

      Scenariul funcționează perfect, îl folosesc de multă vreme și, de fapt, datorită numărului de oameni care îl împărtășesc, nu ar trebui să fie la fel de mizerabil precum spui. Poate ar trebui să vă sunați nepoata pentru a vedea dacă ați stabilit totul corect

    2.    tr el a spus

      Hei, învață să prețuiești și în loc să critici, corectează, dacă te lauzi atât de mult.

      1.    dandutrech el a spus

        Exact, Matias a făcut câteva modificări extraordinare. Cu siguranță scenariul poate fi îmbunătățit și despre asta este vorba în lumea colaborării și așa l-a exprimat Matias. Este păcat că indivizii sunt aici pentru a acri atmosfera bună care ar trebui să predomine. Acolo ei.

    3.    abaddon s el a spus

      Credeți că este utilă o critică nepoliticoasă și că nu adaugă nimic la friptură? MAI BUN NU NU SCRIȚI UN SCRIPT FUTIC ȘI ÎL PĂRȚIȚI !!!!!!

  3.   Nu știu el a spus

    Aici o altă versiune: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Comentează erorile pe care le am, o voi corecta (acum sunt în Windows și nu am putut să o testez).

  4.   zetaka01 el a spus

    Ei bine, folosesc rsync direct cu un script shell, fără a folosi python.
    Am pus o linie pentru fiecare director sursă și destinație.
    Am mai multe scripturi în funcție de dispozitivul pe care fac copia, în cazul meu incremental.
    De exemplu, pentru a copia cărțile mele pe un USB de 128 MB instalat implicit în
    / media / zetaka01 / Sandisk128 Am pus în scriptul LibrosAusb128.sh următoarea linie:

    rsync -av –delete / home / zetaka01 / Cărți / media / zetaka01 / Sandisk128 /

    Dacă directorul de destinație nu există, îl creează pentru dvs. și șterge din destinație ceea ce nu este în origine, recursiv, desigur.
    Un salut.

  5.   zetaka01 el a spus

    Ah, o copiere / lipire - ștergere eroare, cu două cratime.

    Un saludo

  6.   dandutrech el a spus

    Doriți să creați o interfață grafică? Am văzut posibilitățile Tkinter și Tix, dar pentru controlul alegerii directoarelor poate Wx este mai bun

  7.   zetaka01 el a spus

    Există deja o interfață grafică bazată pe GTK, se numește grsync.
    Las linkul către Wikipedia, https://en.wikipedia.org/wiki/Grsync
    Un salut.

  8.   Fernando el a spus

    Salutare tuturor. Scenariul poate fi o minune sau o simplitate, nu știu sau îmi pasă, dar lucrurile se pot spune într-o mie de moduri și când pot fi spuse bine, de ce să le spun greșit? Acestea fiind spuse, trebuie să spun că sunt un utilizator Linux din 2008 și, în ciuda acestui timp, am încet să învăț și este foarte dificil pentru mine să înțeleg multe lucruri, inclusiv cum să execut un script (ușor știu, dar unul nu dă mai mult). instalați programe compilându-le etc. etc. De aceea, când am citit că există o versiune cu o interfață grafică, am căutat și am găsit această pagină în care chiar mestecă totul. Pentru neîndemânatic ca server, îl las aici. Salutări și mulțumiri pentru efortul depus.
    http://www.opbyte.it/grsync/download.html

    1.    dandutrech el a spus

      fernando, fără niciun fel de acrimony și dacă nu vă deranjează să răspundeți, sunt curios de ce folosiți Gnu / Linux. Multumesc si toate cele bune

  9.   zetaka01 el a spus

    Ei bine, o interfață grafică este foarte prietenoasă, dar nu vă oferă opțiunile pe care vi le oferă o comandă completă.
    În plus, nu este cazul meu să o fac pe măsură, un script, fie el shell sau python sau orice vrei, îți permite să-l programezi să ruleze oricând dorești.
    Ah, în distribuția dvs. Linux ar trebui să aveți rsync și grsync fără probleme în depozite.
    Un salut.

  10.   zetaka01 el a spus

    Ah Fernando, dacă folosești Linux din 2008 și nu știi cum să rulezi un script, nu am cuvinte.
    Un saludo

  11.   Gonzalo martinez el a spus

    Pa, aici sunt toți inginerii de sistem care critică scriptul pe care îl face cineva pentru a colabora și dacă folosește consola / scriptul sau orice altceva?

    Câtă rahat să fart pentru numele lui Dumnezeu.

    Gestionez serverele Linux de 10 ani și adevărul este că erecția electronică de a face totul cu scripturi mi-a trecut acum ceva timp, de exemplu, pentru a administra Bacula, prefer să folosesc interfața grafică decât shell-ul pentru a pretinde că sunt important, ceea ce este într-adevăr un mijloc criminal.

    Trebuie să fii productiv, dacă cineva se simte mai confortabil făcând acest lucru prin interfață, bine pentru el, ceea ce contează este rezultatul, nu cum o faci.

    În slujba mea anterioară am dirijat zona IT a unei companii, iar responsabilii i-au cerut să facă ceva anume, m-a interesat rezultatul, el nu a spus «Configurează un alt vhost în apache, folosind vi fără culoare într-un terminal 30 × 20 ”, că o face așa cum este cel mai confortabil, dacă tipul a preferat să o facă așa, montându-se prin SFTP și folosind blocnotesul pentru ferestre sau rugându-l pe Tatăl nostru, nu mi-a păsat atât timp cât a făcut-o bine.

    dandutrech, scriptul își îndeplinește obiectivul, ceea ce este important, acum ceea ce aș schimba este că, în loc să invoc comanda din shell, ar folosi brusc Python-librsync, care este o bibliotecă pentru a utiliza funcțiile rsync din Piton.

    Cu aceasta câștigi portabilitate, scriptul rulează în orice mediu, fie el Linux, Windows sau OS X.

  12.   DanDutrech el a spus

    Mulțumesc, Gonzalo. Sugestia dvs. cred că este foarte bună și o voi pune în scenariu. un salut