Script Python pour les sauvegardes locales avec rsync

Dans Gnu / Linux il existe différents programmes pour effectuer la sauvegarde mais personnellement j'aime les choses simples, loin des interfaces graphiques (qui n'ont rien à redire, bien sûr, mais si je peux éviter de l'utiliser, j'évite).
Dans la commande rsync, il y a un formidable allié de sauvegardes que l'on oublie souvent de faire. Il a suffisamment d'options pour faire une copie avec toutes les exigences nécessaires. ordinateur-767784_640

Le script python suivant effectue des copies de sauvegarde à cet effet. Vous verrez que c'est extrêmement simple et même pour ceux qui n'ont absolument aucune idée de ce langage, l'ajout d'une ligne pour que le script synchronise un nouveau répertoire est immédiat.
Dans ma machine, j'utilise un disque dur externe que j'ai appelé IOmega_HDD, dans votre cas, vous pouvez le renommer dans le script en fonction de votre cas.
Une autre chose est d'ajouter ou de supprimer des répertoires de la copie. Dans le même script que la ligne de commentaire, il est expliqué comment le faire.
Pour automatiser la tâche, vous pouvez ajouter une ligne à crontab contenant l'interpréteur python et le chemin où vous souhaitez placer le script. J'espère que cela vous sera utile.

avertissement: l'éditeur wordpress n'autorise pas d'espacement en début de ligne, donc l'indentation nécessaire a été perdue dans le script, j'ai donc remplacé les espaces vides par des points (.) que vous devez éliminer avec un éditeur et remplacer par des espaces.

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

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


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   Matias dit

    Salut comment ca va?
    J'ai aimé le script, très simple.
    Aucune infraction, j'ai fait quelques modifications pour le rendre plus simple et plus lisible, ainsi que pour supporter Python 2 et 3 (actuellement, il ne pouvait être exécuté qu'en Python 2)

    Je vous laisse le lien avec les 2 versions, au cas où vous seriez intéressé.
    http://linkode.org/1np9l2bi8IiD5oEkPIUQb5/Yfa4900cA76BpcTpcf4nG1

    1.    dandutrich dit

      Grands mods et je suis heureux que vous aimiez le script

  2.   niphosio dit

    L'intention est appréciée, mais le résultat est collant et saucisson.
    Ma nièce de 4 ans est capable de créer un script plus intelligent et configurable que cette pomme de terre que vous avez mise ici.

    Au fait, l'indentation du code est erronée, vérifiez vos boucles et je ne parle pas de celles des cheveux

    1.    dandutrich dit

      Le script fonctionne parfaitement, je l'utilise depuis longtemps et, en fait, en raison du nombre de personnes qui le partagent, il ne devrait pas être aussi merdique que vous le dites. Vous devriez peut-être appeler votre nièce pour voir si vous avez tout mis correctement

    2.    tr dit

      Hé, apprenez à valoriser et au lieu de critiquer, corrigez, si vous vous vantez tellement.

      1.    dandutrich dit

        Exactement tr, Matias a fait de grandes modifications. Certes, le scénario peut être amélioré et c'est ce dont il s'agit dans le monde de la collaboration et c'est ce que Matias a exprimé. Il est dommage que des individus soient ici pour aigrir la bonne ambiance qui devrait régner. Là ils.

    3.    abaddon dit

      Pensez-vous qu'une critique grossière est utile et qu'elle n'ajoute rien au script? MIEUX NE PAS ECRIRE UN SCRIPT FUCK ET LE PARTAGER !!!!!!!

  3.   Je ne sais pas dit

    Voici une autre version: https://gist.github.com/Itsuki4/5acc3d03f3650719b88d
    Commentez les erreurs que j'ai, je vais les corriger (maintenant je suis sous windows et je n'ai pas pu le tester).

  4.   zetaka01 dit

    Eh bien, j'utilise rsync directement avec un script shell, sans utiliser python.
    J'ai mis une ligne pour chaque répertoire source et destination.
    J'ai plusieurs scripts en fonction de l'appareil sur lequel je fais la copie, dans mon cas incrémental.
    Par exemple, pour copier mes livres sur une clé USB de 128 Mo installée par défaut dans
    / media / zetaka01 / Sandisk128 J'ai mis dans le script LibrosAusb128.sh la ligne suivante:

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

    Si le répertoire de destination n'existe pas, il le crée pour vous et supprime de la destination ce qui n'est pas à l'origine, de manière récursive bien sûr.
    Salutations.

  5.   zetaka01 dit

    Ah, une erreur copier / coller –delete, avec deux traits d'union.

    salutations

  6.   dandutrich dit

    Voulez-vous créer une interface graphique? J'ai vu les possibilités de Tkinter et Tix mais pour le contrôle du choix des répertoires peut-être que Wx est meilleur

  7.   zetaka01 dit

    Il existe déjà une interface graphique basée sur GTK, elle s'appelle grsync.
    Je laisse le lien vers Wikipedia, https://en.wikipedia.org/wiki/Grsync
    Salutations.

  8.   fernando dit

    Bonjour à tous. Le scénario peut être une merveille ou une simplicité, je ne sais pas ou je m'en fiche, mais les choses peuvent être dites de mille façons et quand elles peuvent être bien dites, pourquoi les dire mal? Cela dit, je dois dire que je suis un utilisateur de Linux depuis 2008 et que malgré tout ce temps, je suis lent à apprendre et j'ai du mal à comprendre beaucoup de choses, y compris comment exécuter un script (je sais que c'est facile mais on ne donne pas plus). installer des programmes en les compilant etc. etc. C'est pourquoi quand j'ai lu qu'il existe une version avec une interface graphique, j'ai regardé et trouvé cette page où ils vous donnent tout même mâché. Pour le maladroit en tant que serveur, je le laisse ici. Salutations et merci pour vos efforts.
    http://www.opbyte.it/grsync/download.html

    1.    dandutrich dit

      fernando, sans aucune acrimonie et si cela ne vous dérange pas de répondre, je suis curieux de savoir pourquoi vous utilisez Gnu / Linux. Merci et salutations

  9.   zetaka01 dit

    Eh bien, une interface graphique est très conviviale mais elle ne vous donne pas les options qu'une commande complète vous donne.
    De plus, ce n'est pas mon cas que je le fasse sur mesure, un script, que ce soit shell ou python ou ce que vous voulez, vous permet de le programmer pour qu'il s'exécute quand vous le souhaitez.
    Ah, dans votre distribution Linux, vous devriez avoir rsync et grsync sans problème dans les référentiels.
    Salutations.

  10.   zetaka01 dit

    Ah Fernando, si vous utilisez Linux depuis 2008 et que vous ne savez pas comment exécuter un script, je n'ai pas de mots.
    salutations

  11.   Gonzalo martinez dit

    Pa sont tous des ingénieurs système ici qui critiquent le script que quelqu'un fait pour collaborer, et s'il faut utiliser console / script ou autre?

    Que de merde à péter pour l'amour de Dieu.

    Je gère des serveurs Linux depuis 10 ans, et la vérité est que l'érection électronique de tout faire avec des scripts m'a passé il y a quelque temps, par exemple, pour administrer Bacula, je préfère utiliser l'interface graphique que le shell pour faire semblant d'être important, ce qui est vraiment un moyen criminel .

    Il faut être productif, si quelqu'un se sent plus à l'aise de le faire par interface, eh bien pour lui, ce qui compte, c'est le résultat, pas comment on le fait.

    Dans mon travail précédent j'ai dirigé le domaine informatique d'une entreprise, et les responsables lui ont demandé de faire quelque chose de spécifique, j'étais intéressé par le résultat, il n'a pas dit «Configurer un autre vhost dans apache, en utilisant le vi sans couleur dans un terminal 30 × 20 », qu'il le fasse comme il est le plus à l'aise, si le gars préférait le faire comme ça, monter par SFTP et utiliser le bloc-notes des fenêtres, ou prier notre Père, je m'en fichais tant qu'il le faisait correctement.

    dandutrech, le script remplit son objectif, ce qui est important, maintenant ce que je changerais, c'est qu'au lieu d'appeler la commande depuis le shell, il utiliserait soudainement Python-librsync, qui est une bibliothèque pour utiliser les fonctions rsync dans Python.

    Avec cela, vous gagnez en portabilité, le script s'exécute dans n'importe quel environnement, que ce soit Linux, Windows ou OS X.

  12.   dandoutrecht dit

    Merci Gonzalo. Je pense que votre suggestion est très bonne et je vais la mettre dans le script. salutations