[Python-es] copiar directorios 2(script incluido)
Marcos Sánchez Provencio
rapto en arrakis.es
Mie Oct 16 11:24:47 CEST 2002
¿Lo has intentado con shutil.copytree?
El mié, 16-10-2002 a las 10:00, Jon Bengoetxea escribió:
>
> Hola a tod en s.
> Me explico mejor....y de paso os paso el script.
>
> Me pasa una cosa curiosa, cuando creo una lista del contenido del disco
> de un servidor NT remoto:
>
> disco_servidor=['Archivos de programa','WINNT',.......]
>
> y lo meto en un bucle que me copia dichos directorios y ficheros a un
> disco local, me intenta copiar por ejemplo el primer elemento de la
> lista de esta forma:
>
> copydir Archivos
> copydir de
> copydir programa
>
> cuando lo valido seria
>
> copydir Archivos de programa
>
> Logicamente me salta un error que me indica que no existen dichos
> directorios.
>
> El comando copydir de linux(del paquete mirrordir) lo declaro en una variable.
> cmd_copia='copydir '
>
> y luego lo lanzo en el bucle de copia con os.system()
>
> for copia in lista_dir:
> os.system('%s -v /mnt/%s %s'%(cmd_copia,copia,destino_dir[dia_seleccionado]))
> Este bucle me copia el contenido del disco remoto en un disco local en el dia que corresponde.
>
> Sabe alguien porque me hace esto??
>
> Gracias, bye
>
> Aqui teneis el script para los curiosos y para los supernovatos como yo, e incluso puede que a alguien le sirva, tener en cuenta que me falla lo indicado mas arriva.
>
> Espero sugerencias:
>
> #!/usr/bin/env python2.2
>
> #Script que permite crear una copia de seguridad de tu sistema local o remoto#
> #-------------------------->metax 2002 Zybertxapel<----------------------------------#
> #Este script solo se puede ejecutar como root y depende de mirrordir y samba(si quieres hacer copias remotas de NT/2000)
> #La forma de ejecutarlo es ---- muback <numero que corresponde al dia > o sea si ponemos muback 0, nos copiara lo que este montado en /mnt en el directorio
> #/COPIAS/LUNES, si ponemos muback 2 copiaremos en /COPIAS/MARTES................... . . . . . . . . . . . . . . . . . . . . . . . . . . .
> #Podemos lanzar muback manualmente o poniendolo en el cron.
>
> #importamos algunos modulos.
> import sys, os, commands
>
> if len(sys.argv) <> 2:
> print '\nDebes introducir el argumento de forma correcta\n\nmuba --help, muba -h\n\n'
> sys.exit()
>
> # Imprime la ayuda.....
> try:
> if (sys.argv[1] == '--help') or (sys.argv[1] == '-h'):
> print '\nUso: muback <numero correspondiente dia de la semana>'
> print '\nCon muback podras crear copias de seguridad locales o remotas'
> print '\n0 --> Lunes\n1 --> Martes\n2 --> Miercoles\n3 --> Jueves\n4 --> Viernes\n5 --> Sabado\n6 --> Domingo\n'
> sys.exit()
> elif (sys.argv[1] == '--version') or (sys.argv[1] == '-v'):
> print '\nmuback version 0.1 Zybertxapel(2002)'
> print '\n14 Octubre 19:40:35 2002\n'
> sys.exit()
> except IndexError:
> pass
> #Definimos comandos y variables
> montar='smbmount //servidor/discoC /mnt -o username=administrador,password=hola'
>
> #El directorio COPIAS esta montado en una particion local y con los directorios de los dias de la semana
> destino_dir=['/COPIAS/LUNES','/COPIAS/MARTES','/COPIAS/MIERCOLES','/COPIAS/JUEVES','/COPIAS/VIERNES','/COPIAS/SABADO','/COPIAS/DOMINGO']
>
> #Si quieres hacer copias de tus datos en local seria por ejemplo--->montar='mount /dev/sdb1 /COPIAS'
> desmontar='umount /mnt'
>
> #Variable comando copia(mirar mirrordir)
> cmd_copia='copydir '
>
> #Montar
> os.system(montar)
>
> #Creamos una lista del contenido de la raiz del disco remoto
> lista_dir=os.listdir('/mnt')
>
> #Lista de los directorios y ficheros que no quiero que me copie
> no_copy=['pagefile.sys','RECYCLER','TEMP','WINNT','System Volume Information']
>
> #Depuramos la lista quitando los directorios que no quiero que me copie y creando una lista final.
> for depurado in no_copy:#Excluimos los directorios o ficheros de la lista final.
> lista_dir.remove(depurado)
>
> # Identificamos el dia segun el argumento que le pasemos a 'muba' y creamos las variables de destino(lunes,martes,etc....)
> num_elemen_dest=len(destino_dir)
> for dia_lista in range(num_elemen_dest):
> if (sys.argv[1] >= '7'):
> print "\n0 --> Lunes\n1 --> Martes\n2 --> Miercoles\n3 --> Jueves\n4 --> Viernes\n5 --> Sabado\n6 --> Domingo\nmuba --help o muba -h para la ayuda\n"
> sys.exit()
> if (sys.argv[1] == '%d'%dia_lista):
> dia_seleccionado=dia_lista
> break
>
> #Bucle de copia
> for copia in lista_dir:
> os.system('%s -v /mnt/%s %s'%(cmd_copia,copia,destino_dir[dia_seleccionado]))
> print "Copiando %s en %s" %(copia,destino_dir[dia_seleccionado])
> #Desmontar
> os.system(desmontar)
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo.py/python-es
Más información sobre la lista de distribución Python-es