Memorias de un Técnico Ligero

Ver más publicaciones del año 2020

Un scritp para backup de usuarios en Python

Si sos ténico en sistemas Windows (en el laubro donde trabajan con privativo, pero hay que comer, vio) y tenés la derechos de aministrador con esto podés hacer un backup sólo con la ip, el usuario y el fantástico Robocopy. Una genialidad para no tener que ir a la carpeta del usuario y copiar todo. Esto lo hacer por vos y discrimina algunos archivos molestos.

Como hoy estoy dicharachero voy a explicar paso por paso (es mentira, lo hago porque el script es corto):
-Primero importamos el módulo subprocess, fundamental para llamar a instancias del S.O.
-Después englobamos todo en una función.
-Pedimos la ip con un input
-Pedimos el usuario y el nombre donde va a ir (tiene que existir unidad D en tu pc en este caso)
-La variable ruta arma todo con lo que pusiste arriba, más c\$/users, que es donde están todos los usuarios en Windows (hasta el día de hoy, W10)
-El destino, donde vas a backupear.

-La variable copia lo que hace es llamar a Robocopy desde la funcion subprocess.call y le dice que use la ruta origen y la copie a destino, excluyendo el archivo NTuser y el direcctorio (al pedo claro está para este caso) APPdata. Está comentado, pero si querés registro podés crear al final un TXT.

Listo. Tirás la copia y en la variable te va a dar un número. Si es 9 anduvo todo bien. Si es 8, ya había algo en la carpeta, y si es 16 alguna cagada hiciste.

Finalmente, llamo a la función. Eso es todo.

¡Ahí va!

import subprocess

def backup():

    laip= input ( nIngrese la ip: )
    usuario= input (Ingrese el usuario para backup: )
    carpeta= input (Nombre carpeta destino: )

    ruta = (//+laip+//c$/users/+usuario+/)

    destino = (d:/backups/+carpeta+/)

    copia = subprocess.call(robocopy  +ruta+   +destino +  /S /XF NTUSER.* /XD Appdata ) # si quiero registro —- /LOG:d:log-usuario.txt

    if copia == 9: #son numeros que da el sistema para exito, igualdad o error
        print (Backup realizado con exito…’)
    elif copia == 8:
        print (Ya habia contenido en esa carpeta :()
        print (Escribi backup() y empeza de nuevo)
    elif copia == 16:
        print (Por algun motivo fallo :()
        print (Escribi backup() y empeza de nuevo)

backup()
Arriba


Escrito por: , el día: