Sincronizar archivos usando python

Este sencillo script utiliza como recurso algunos comandos del sistema operativo, en este caso GNU/Linux Debian, la idea fue crear un pequeño arreglo de los directorios que más uso y copiar los archivos dentro de estos en un disco duro externo que uso como unidad de respaldo.

Para no hacer copias y sobrescribir archivos, usé como recurso rsync con un modo de actualización, el script es una migración de uno que había hecho con Bash, que hacía el trabajo bien pero en cierto modo Bash tiene algunas limitantes.

#!/usr/bin/env python

import os

dir_home = '/home/satelite'
dir_disk = '/media/satelite/respaldos'
dirs = ['PDF', 'programacion', 'Documents', 'Pictures', 'Downloads', 'isos']
rsync_com = 'rsync -av'

if os.path.exists(dir_disk):
    for d in dirs:
        if os.path.exists(dir_home+'/'+d) and os.path.exists(dir_disk+'/'+d):
            os.system(rsync_com+' '+dir_home+'/'+d+'/* '+dir_disk+'/'+d+'/')
        else:
            print 'No existe la ruta de respaldo definida'
else:
    print 'No hay disco conectado o no existe la ruta de respaldo definida'

La variable dir_home es el directorio home de mi área de trabajo, hice un arreglo de los subdirectorios que están dentro de dicho home, y sus respectivos directorios espejos que están en el disco duro.

Por defecto el disco duro en la versión Jessie de Debian se cargan con una ruta parecida a la siguiente: /media/satelite, dentro está el subdirectorio respaldos y dentro de éste los directorios espejos donde se copiarán los archivos que se enviarán desde el home.

Este script se puede realizar de múltiples maneras, así de sencillo es bien útil, adicionalmente las clases y métodos python asociados al sistema operativo son muy intuitivos al momento de implementarlos.

Advertisements

About felixurbina

Humano con todos los defectos y virtudes que vienen de fábrica.
This entry was posted in Python. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s