Python-script voor lokale back-ups met rsync

In Gnu / Linux zijn er verschillende programma's om de back-up uit te voeren, maar persoonlijk houd ik van simpele dingen, verre van grafische interfaces (die natuurlijk niets aan de hand hebben, maar als ik het kan vermijden, vermijd ik het).
In het rsync-commando is er een formidabele bondgenoot van back-ups die we vaak vergeten te doen. Het heeft voldoende mogelijkheden om een ​​kopie te maken met alle nodige vereisten. computer-767784_640

Het volgende python-script maakt hiervoor reservekopieën. U zult zien dat het uiterst eenvoudig is en zelfs voor degenen die absoluut geen idee hebben van deze taal, is het onmiddellijk toevoegen van een regel voor het script om een ​​nieuwe directory te synchroniseren.
In mijn machine gebruik ik een externe harde schijf die ik IOmega_HDD heb genoemd, in jouw geval kun je deze hernoemen in het script volgens jouw geval.
Een ander ding is om mappen toe te voegen aan of te verwijderen uit de kopie. In hetzelfde script als de commentaarregel wordt uitgelegd hoe het moet.
Om de taak te automatiseren, kunt u een regel aan crontab toevoegen met de python-interpreter en het pad waar u het script wilt plaatsen. Ik hoop dat het nuttig voor je is.

waarschuwing: de wordpress-editor staat geen spaties aan het begin van de regel toe, dus de noodzakelijke inspringing in het script is verloren gegaan, dus heb ik de lege spaties vervangen door punten (.) die je moet verwijderen met een editor en vervangen door spaties.

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

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


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Matias zei

    Hallo hoe gaat het
    Ik vond het script leuk, heel simpel.
    Geen overtreding, ik heb enkele wijzigingen aangebracht om het eenvoudiger en leesbaarder te maken, en om Python 2 en 3 te ondersteunen (momenteel kan het alleen in Python 2 worden uitgevoerd)

    Ik laat je de link met de 2 versies achter, voor het geval je geïnteresseerd bent.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    dandutrich zei

      Geweldige mods en ik ben blij dat je het script leuk vindt

  2.   niphosio zei

    De bedoeling wordt gewaardeerd, maar het resultaat is plakkerig en worst.
    Mijn 4-jarige nichtje is in staat om een ​​intelligenter en configureerbaarder script te maken dan deze aardappel die je hier hebt neergezet.

    Trouwens, de inspringing van de code is verkeerd, controleer je loops en dan bedoel ik niet de hair-ones

    1.    dandutrich zei

      Het script werkt perfect, ik gebruik het al een lange tijd en, gezien het aantal mensen dat het deelt, zou het eigenlijk niet zo waardeloos moeten zijn als je zegt. Misschien moet je je nichtje bellen om te zien of je alles correct hebt gezet

    2.    tr zei

      Hé, leer waarderen en in plaats van te bekritiseren, corrigeer, als je zo opschept.

      1.    dandutrich zei

        Precies tr, Matias heeft een aantal geweldige wijzigingen aangebracht. Het script is zeker te verbeteren en daar gaat het in de wereld van samenwerken om en dat is wat Matias heeft verwoord. Het is jammer dat mensen hier in de buurt zijn om de goede sfeer die zou moeten heersen te verzuren. Daar zij.

    3.    abaddon zo zei

      Denk je dat een grove kritiek nuttig is en dat het niets toevoegt aan de scrip? BETER SCHRIJF JE GEEN FUCKING SCRIPT EN DEEL HET !!!!!!!

  3.   Ik weet het niet zei

    Hier een andere versie: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Geef commentaar op de fouten die ik heb, ik zal het corrigeren (nu zit ik in Windows en kon ik het niet testen).

  4.   zetaka01 zei

    Ik gebruik rsync rechtstreeks met een shell-script, zonder python te gebruiken.
    Ik heb een regel gezet voor elke bron- en bestemmingsmap.
    Ik heb verschillende scripts, afhankelijk van het apparaat waarop ik de kopie maak, in mijn geval incrementeel.
    Om bijvoorbeeld mijn boeken te kopiëren naar een 128 MB usb die standaard is geïnstalleerd in
    / media / zetaka01 / Sandisk128 Ik heb in het script LibrosAusb128.sh de volgende regel gezet:

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

    Als de bestemmingsmap niet bestaat, maakt deze deze voor u aan en verwijdert van de bestemming wat niet in de oorsprong staat, recursief natuurlijk.
    Een groet.

  5.   zetaka01 zei

    Ah, een kopieer- / plak-verwijderfout, met twee koppeltekens.

    groeten

  6.   dandutrich zei

    Wilt u een grafische interface maken? Ik heb de mogelijkheden van Tkinter en Tix gezien, maar voor de controle van de keuze van mappen is Wx misschien beter

  7.   zetaka01 zei

    Er is al een grafische interface gebaseerd op GTK, deze heet grsync.
    Ik laat de link naar Wikipedia, https://en.wikipedia.org/wiki/Grsync
    Een groet.

  8.   fernando zei

    Hallo allemaal. Het script kan een wonder zijn of een eenvoud die ik niet ken of niet kan schelen, maar dingen kunnen op duizend manieren worden gezegd en als ze goed kunnen worden gezegd, waarom zou ik ze dan verkeerd zeggen? Dat gezegd hebbende, moet ik zeggen dat ik sinds 2008 een Linux-gebruiker ben en ondanks al die tijd ben ik traag met leren en heb ik moeite om veel dingen te begrijpen, inclusief hoe je een script moet draaien (ik weet dat het gemakkelijk is, maar meer geeft niet). installeer programma's door ze te compileren enz. enz. Dat is de reden waarom toen ik las dat er een versie is met een grafische interface, ik deze pagina heb gezocht en gevonden waar ze je alles geven, zelfs opgekauwd. Voor de onhandigen als server laat ik het hier achter. Groeten en bedankt voor je moeite.
    http://www.opbyte.it/grsync/download.html

    1.    dandutrich zei

      fernando, zonder enige bitterheid en als je het niet erg vindt om te antwoorden, ben ik benieuwd waarom je Gnu / Linux gebruikt. Bedankt en vriendelijke groeten

  9.   zetaka01 zei

    Welnu, een grafische interface is erg vriendelijk, maar het geeft je niet de opties die een volledig commando je geeft.
    Bovendien is het niet mijn geval dat ik het doe om te meten, een script, of het nu shell of python is of wat je maar wilt, stelt je in staat om het te programmeren om te draaien wanneer je maar wilt.
    Ah, in je linux distro zou je rsync en grsync zonder problemen in de repositories moeten hebben.
    Een groet.

  10.   zetaka01 zei

    Ah Fernando, als je linux gebruikt sinds 2008 en je weet niet hoe je een script moet draaien, ik heb geen woorden.
    groeten

  11.   Gonzalo Martinez zei

    Pa zijn hier allemaal systeemingenieurs die kritiek hebben op het script dat iemand doet om samen te werken, en of ze console / script of wat dan ook moeten gebruiken?

    Hoeveel shit om een ​​scheet te laten in godsnaam.

    Ik beheer al 10 jaar Linux-servers en de waarheid is dat de elektronische erectie van alles doen met scripts me een tijdje geleden is overgegaan, bijvoorbeeld om Bacula te beheren, ik gebruik liever de grafische interface dan de shell om te doen alsof ik belangrijk ben, wat echt een crimineel middel is .

    Je moet productief zijn, als iemand zich meer op zijn gemak voelt om het via de interface te doen, nou voor hem, wat telt is het resultaat, niet hoe je het doet.

    In mijn vorige baan leidde ik de IT-afdeling van een bedrijf, en de verantwoordelijke mensen vroegen hem iets specifieks te doen, ik was geïnteresseerd in het resultaat, hij zei niet: «Configureer een andere vhost in apache, gebruik de vi zonder kleur in een terminal 30 × 20 ”, dat hij het doet zoals hij zich het meest op zijn gemak voelt, als de man het liever zo deed, opstapelen via SFTP en het Windows-kladblok gebruiken, of biddende onze Vader, het kon me niet schelen zolang hij het goed deed.

    dandutrech vervult het script zijn doel, wat het belangrijkste is, wat ik nu zou veranderen is dat in plaats van het commando vanuit de shell aan te roepen, het plotseling Python-librsync zou gebruiken, wat een bibliotheek is om de rsync-functies binnen Python.

    Daarmee wint u aan draagbaarheid, het script draait in elke omgeving, of het nu Linux, Windows of OS X is.

  12.   DanNederlands zei

    Bedankt, Gonzalo. Uw suggestie is volgens mij erg goed en ik ga het in het script opnemen. een begroeting