Python-script til lokale sikkerhedskopier med rsync

I Gnu / Linux er der forskellige programmer til sikkerhedskopiering, men personligt kan jeg lide enkle ting langt fra grafiske grænseflader (som selvfølgelig ikke har noget galt, men hvis jeg undgår at bruge det, undgår jeg det).
I rsync-kommandoen er der en formidabel allieret med sikkerhedskopier, som vi ofte glemmer at gøre. Det har tilstrækkelige muligheder for at lave en kopi med alle de nødvendige krav. computer-767784_640

Følgende python-script laver sikkerhedskopier til dette formål. Du vil se, at det er ekstremt simpelt, og selv for dem, der ikke har nogen idé om dette sprog, er det straks at tilføje en linje til scriptet for at synkronisere en ny mappe.
I min maskine bruger jeg en ekstern harddisk, som jeg har kaldt IOmega_HDD, i dit tilfælde kan du omdøbe den i scriptet efter din sag.
En anden ting er at tilføje eller fjerne mapper fra kopien. I samme script som kommentarlinje forklares det, hvordan man gør det.
For at automatisere opgaven kan du tilføje en linje til crontab, der indeholder pythontolken og stien, hvor du vil placere scriptet. Jeg håber, det er nyttigt for dig.

Advarsel: wordpress-editoren tillader ikke en afstand i begyndelsen af ​​linjen, så den nødvendige fordybning i scriptet er gået tabt, så jeg har erstattet de tomme mellemrum med punktum (.) som du skal fjerne med en editor og erstatte med mellemrum .

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

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


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

18 kommentarer, lad dine

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort.

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Matias sagde han

    Hej, hvordan går det?
    Jeg kunne godt lide scriptet, meget simpelt.
    Ingen lovovertrædelse, jeg lavede nogle ændringer for at gøre det enklere og mere læsbart samt understøtte Python 2 og 3 (i øjeblikket kunne det kun køres i Python 2)

    Jeg giver dig linket til de to versioner, hvis du er interesseret.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    skæl sagde han

      Store mods og jeg er glad for at du kan lide scriptet

  2.   niphosio sagde han

    Hensigten værdsættes, men resultatet er klæbrig og pølse.
    Min 4-årige niece er i stand til at fremstille et mere intelligent og konfigurerbart script end denne kartoffel, du har lagt her.

    Forresten, indrykket af koden er forkert, tjek dine sløjfer, og jeg mener ikke hårene

    1.    skæl sagde han

      Scriptet fungerer perfekt, jeg har brugt det i lang tid, og faktisk på grund af antallet af mennesker, der deler det, burde det ikke være så skørt som du siger. Måske skal du ringe til din niece for at se, om du har lagt alt korrekt

    2.    tr sagde han

      Hej, lær at værdsætte og i stedet for at kritisere, rette, hvis du praler så meget.

      1.    skæl sagde han

        Præcis tr, Matias har foretaget nogle gode ændringer. Bestemt manuskriptet kan forbedres, og det er det, det handler om i en verden af ​​samarbejde, og det er sådan Matias har udtrykt det. Det er en skam, at enkeltpersoner er her for at give den gode atmosfære, der skal herske. Der er de.

    3.    abaddon s sagde han

      Tror du, at en uhøflig kritik er nyttig, og at den ikke tilføjer noget til scripten? BEDRE SKRIVER DU IKKE EN FUCKING SCRIPT OG DEL DET !!!!!!!

  3.   Det ved jeg ikke sagde han

    Her en anden version: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Kommenter de fejl, jeg har, jeg vil rette det (nu er jeg i windows, og jeg kunne ikke teste det).

  4.   zetaka01 sagde han

    Nå, jeg bruger rsync direkte med et shell-script uden at bruge python.
    Jeg satte en linje for hver kilde og destinationsmappe.
    Jeg har flere scripts afhængigt af den enhed, hvor jeg laver kopien, i mit tilfælde inkrementelt.
    For eksempel at kopiere mine bøger til en 128 MB usb, der er installeret som standard i
    / media / zetaka01 / Sandisk128 Jeg lagde i scriptet LibrosAusb128.sh følgende linje:

    rsync -av –delete / home / zetaka01 / Bøger / medier / zetaka01 / Sandisk128 /

    Hvis destinationsmappen ikke findes, opretter den den til dig og sletter, hvad der ikke er i oprindelsen, naturligvis rekursivt fra destinationen.
    En hilsen.

  5.   zetaka01 sagde han

    Ah, en kopi / indsæt-slet fejl med to bindestreger.

    hilsener

  6.   skæl sagde han

    Vil du oprette en grafisk grænseflade? Jeg har set mulighederne for Tkinter og Tix, men til kontrol af valget af mapper er Wx måske bedre

  7.   zetaka01 sagde han

    Der er allerede en grafisk grænseflade baseret på GTK, den kaldes grsync.
    Jeg forlader linket til Wikipedia, https://en.wikipedia.org/wiki/Grsync
    En hilsen.

  8.   fernando sagde han

    Hej allesammen. Manuskriptet kan være et vidunder eller en enkelhed, jeg ved ikke eller er ligeglad, men ting kan siges på tusind måder, og når de kan siges godt, hvorfor sige dem forkert? Når det er sagt, må jeg sige, at jeg har været Linux-bruger siden 2008, og på trods af al denne tid er jeg langsom til at lære, og det er meget svært for mig at forstå mange ting, herunder hvordan man udfører et script (let, jeg ved, men en giver ikke mere). installer programmer ved at kompilere dem osv. osv. Det er derfor, når jeg læser, at der er en version med en grafisk grænseflade, har jeg søgt og fundet denne side, hvor de endda giver dig alt tygget op. For de klodsede som server lader jeg det være her Hilsner og tak for din indsats.
    http://www.opbyte.it/grsync/download.html

    1.    skæl sagde han

      fernando, uden noget problem, og hvis du ikke har noget imod at svare, er jeg nysgerrig over, hvorfor du bruger Gnu / Linux. Tak og hilsner

  9.   zetaka01 sagde han

    Nå, en grafisk grænseflade er meget venlig, men det giver dig ikke de muligheder, som en fuld kommando giver dig.
    Det er heller ikke min sag, at jeg gør det for at måle, et script, det være sig shell eller python eller hvad du vil, giver dig mulighed for at programmere det til at køre, når du vil.
    Ah, i din linux distro skal du have rsync og grsync uden problemer i arkiverne.
    En hilsen.

  10.   zetaka01 sagde han

    Ah Fernando, hvis du har brugt linux siden 2008, og du ikke ved hvordan man kører et script, har jeg ingen ord.
    hilsener

  11.   Gonzalo Martinez sagde han

    Pa er alle systemteknikere her, der kritiserer scriptet, som nogen gør for at samarbejde, og hvis de skal bruge konsol / script eller hvad?

    Hvor meget lort at prutte for Guds skyld.

    Jeg har styret Linux-servere i 10 år, og sandheden er, at den elektroniske erektion af at gøre alt med scripts passerede mig for et stykke tid siden, for eksempel for at administrere Bacula, jeg foretrækker at bruge den grafiske grænseflade end skallen til at foregive at være vigtigt, hvilket virkelig er et kriminelt middel.

    Man skal være produktiv, hvis nogen føler sig mere komfortable ved at gøre det ved hjælp af interface, godt for ham, er det der betyder noget resultatet, ikke hvordan du gør det.

    I mit tidligere job ledede jeg IT-området i en virksomhed, og de ansvarlige bad ham om at gøre noget specifikt, jeg var interesseret i resultatet, han sagde ikke «Konfigurer en anden vhost i apache ved hjælp af vi uden farve i en terminal 30 × 20 ”, at han gør det, som han er mest behagelig, hvis fyren foretrak at gøre det sådan, montere ved SFTP og bruge windows notesblok eller bede vores far, var jeg ligeglad, så længe han gjorde det rigtigt.

    dandutrech, scriptet opfylder sit mål, hvilket er det vigtige, nu, hvad jeg ville ændre er, at i stedet for at påkalde kommandoen fra skallen, ville det pludselig bruge Python-librsync, som er et bibliotek til at bruge rsync-funktionerne i Python .

    Med det får du bærbarhed, kører scriptet i ethvert miljø, det være sig Linux, Windows eller OS X.

  12.   dandutrecht sagde han

    Tak, Gonzalo. Dit forslag synes jeg er meget godt, og jeg vil sætte det i manuskriptet. en hilsen

bool (sandt)