Python-skript för lokala säkerhetskopior med rsync

I Gnu / Linux finns det olika program för att säkerhetskopiera men personligen gillar jag enkla saker, långt ifrån grafiska gränssnitt (som naturligtvis inte har något fel, men om jag kan undvika att använda det, undviker jag).
I rsync-kommandot finns en formidabel allierad med säkerhetskopior som vi ofta glömmer att göra. Det har tillräckligt med alternativ för att göra en kopia med alla nödvändiga krav. dator 767784_640

Följande python-skript gör säkerhetskopior för detta ändamål. Du kommer att se att det är extremt enkelt och till och med för dem som inte har någon aning om detta språk är det omedelbart att lägga till en rad för skriptet för att synkronisera en ny katalog.
I min maskin använder jag en extern hårddisk som jag har kallat IOmega_HDD, i ditt fall kan du byta namn på det i skriptet enligt ditt fall.
En annan sak är att lägga till eller ta bort kataloger från kopian. I samma skript som kommentarraden förklaras hur man gör det.
För att automatisera uppgiften kan du lägga till en rad i crontab som innehåller pythontolken och sökvägen där du vill placera skriptet. Jag hoppas att det är användbart för dig.

varning: WordPress-redigeraren tillåter inte ett avstånd i början av raden, så den nödvändiga fördjupningen i skriptet har gått förlorad, så jag har ersatt de tomma utrymmena med punkter (.) som du måste eliminera med en editor och ersätta med mellanslag .

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

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


18 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Matias sade

    Hej hur mår du?
    Jag gillade manuset, väldigt enkelt.
    Inget brott, jag gjorde några ändringar för att göra det enklare och mer läsbart, förutom att stödja Python 2 och 3 (för närvarande kan det bara köras i Python 2)

    Jag lämnar länken till de två versionerna, om du är intresserad.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    dandutrich sade

      Bra mods och jag är glad att du gillar manuset

  2.   niphosio sade

    Avsikten uppskattas, men resultatet är klibbigt och korv.
    Min 4-åriga systerdotter kan göra ett mer intelligent och konfigurerbart manus än den här potatisen du har lagt här.

    Förresten, koden är felaktig, kolla dina öglor och jag menar inte håren

    1.    dandutrich sade

      Manuset fungerar perfekt, jag har använt det länge och faktiskt, på grund av antalet personer som delar det, borde det inte vara så skit som du säger. Du kanske borde ringa din systerdotter för att se om du har lagt allt på rätt sätt

    2.    tr sade

      Hej, lär dig att värdera och istället för att kritisera, rätta, om du skryter så mycket.

      1.    dandutrich sade

        Exakt tr, Matias har gjort några bra modifieringar. Visst kan manuset förbättras och det är vad det handlar om i samarbetsvärlden och det är vad Matias har uttryckt. Det är synd att individer är här för att försurra den goda atmosfär som ska råda. Där de.

    3.    abaddon s sade

      Tror du att en oförskämd kritik är användbar och att den inte lägger till något i skriptet? BÄTTRE INTE SKRIVER DU EN JÄVLIG SKRIFT OCH DELAR DET !!!!!!!

  3.   Jag vet inte sade

    Här en annan version: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Kommentera de fel jag har, jag kommer att rätta till det (nu är jag i windows och jag kunde inte testa det).

  4.   zetaka01 sade

    Tja, jag använder rsync direkt med ett skalskript utan att använda python.
    Jag sätter en rad för varje käll- och målkatalog.
    Jag har flera skript beroende på vilken enhet jag kopierar på, i mitt fall inkrementell.
    Till exempel för att kopiera mina böcker till ett 128 MB USB-minne som är installerat som standard i
    / media / zetaka01 / Sandisk128 Jag lägger i skriptet LibrosAusb128.sh följande rad:

    rsync -av –delete / home / zetaka01 / Böcker / media / zetaka01 / Sandisk128 /

    Om målkatalogen inte finns skapar den den åt dig och raderar naturligtvis rekursivt det som inte finns i ursprunget.
    En hälsning.

  5.   zetaka01 sade

    Ah, kopiera / klistra in - radera fel med två bindestreck.

    hälsningar

  6.   dandutrich sade

    Vill du skapa ett grafiskt gränssnitt? Jag har sett möjligheterna med Tkinter och Tix men för kontrollen av valet av kataloger kanske Wx är bättre

  7.   zetaka01 sade

    Det finns redan ett grafiskt gränssnitt baserat på GTK, det kallas grsync.
    Jag lämnar länken till Wikipedia, https://en.wikipedia.org/wiki/Grsync
    En hälsning.

  8.   fernando sade

    Hej alla. Manuset kan vara ett under eller en enkelhet som jag inte känner eller bryr mig om men saker kan sägas på tusen sätt och när de kan sägas väl, varför säga dem fel? Med detta sagt måste jag säga att jag har varit Linux-användare sedan 2008 och trots hela den här tiden är jag långsam att lära mig och jag har svårt att förstå många saker inklusive hur man kör ett skript (jag vet att det är enkelt men det gör man inte ger inte mer). installera program genom att kompilera dem etc. etc. Det är därför när jag läser att det finns en version med ett grafiskt gränssnitt som jag har tittat på och jag hittade den här sidan där de ger dig allt tuggat. För de klumpiga som server lämnar jag det här. Hälsningar och tack för din ansträngning.
    http://www.opbyte.it/grsync/download.html

    1.    dandutrich sade

      fernando, utan någon svårighet och om du inte har något emot att svara är jag nyfiken på varför du använder Gnu / Linux. Tack och hälsningar

  9.   zetaka01 sade

    Tja, ett grafiskt gränssnitt är mycket vänligt men det ger dig inte de alternativ som ett fullständigt kommando ger dig.
    Dessutom är det inte mitt fall att jag gör det för att mäta, ett skript, oavsett om det är skal eller python eller vad du än vill, låter dig programmera det att köra när du vill.
    Ah, i din Linux-distro borde du ha rsync och grsync utan problem i förvaren.
    En hälsning.

  10.   zetaka01 sade

    Ah Fernando, om du har använt linux sedan 2008 och du inte vet hur man kör ett skript har jag inga ord.
    hälsningar

  11.   Gonzalo Martinez sade

    Pa är alla systemtekniker här som kritiserar skriptet som någon gör för att samarbeta, och om de ska använda konsol / skript eller vad som helst?

    Hur mycket skit att fisa för Guds skull.

    Jag har hanterat Linux-servrar i tio år, och sanningen är att den elektroniska upprättandet av att göra allt med skript passerade mig för ett tag sedan, till exempel för att administrera Bacula, jag föredrar att använda det grafiska gränssnittet än skalet för att låtsas vara viktigt, vilket verkligen är ett kriminellt medel.

    Man måste vara produktiv, om någon känner sig mer bekväm med att göra det via gränssnitt, ja för honom, det som är viktigt är resultatet, inte hur du gör det.

    I mitt tidigare jobb ledde jag IT-området för ett företag och de ansvariga frågade honom att göra något specifikt, jag var intresserad av resultatet, han sa inte «Konfigurera en annan värd i apache, med vi utan färg i en terminal 30 × 20 ”, att han gör det som han är bekvämast, om killen föredrog att göra det så, montera med SFTP och använda Windows anteckningsblock, eller ber vår far, jag brydde mig inte så länge han gjorde det rätt.

    dandutrech, skriptet uppfyller sitt mål, vilket är det viktiga, nu vad jag skulle ändra är att istället för att åberopa kommandot från skalet skulle det plötsligt använda Python-librsync, vilket är ett bibliotek för att använda rsync-funktionerna i Python .

    Med det får du portabilitet, skriptet körs i vilken miljö som helst, vare sig Linux, Windows eller OS X.

  12.   dandutrecht sade

    Tack, Gonzalo. Ditt förslag tycker jag är väldigt bra och jag kommer att lägga det i manuset. en hälsning