• Publicidad

Rotación de ficheros de imágenes

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Rotación de ficheros de imágenes

Notapor aficionado » 2011-07-04 06:06 @296

¡¡¡Hola amigo Explorer!!!
El programa lo ejecuto desde Ubuntu 10.10 y éste, si no me equivoco, está en /dev/sdf7 y las particiones E y F pertenecen a particiones vacías en mi disco ¡¡¡SATA!!! de 160 Gb. Espero tu ayuda y perdón por molestar tanto... Espero tu respuesta un abrazo a la distancia :)

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Disco /dev/sdf: 160.0 GB, 160041885696 bytes
255 cabezas, 63 sectores/pista, 19457 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Tamaño de sector (lógico / físico): 512 bytes / 512 bytes
Tamaño E/S (mínimo/óptimo): 512 bytes / 512 bytes
Identificador de disco: 0x88e088e0

Dispositivo Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdf1   *           1        9361    75187215    7  HPFS/NTFS
/dev/sdf2            9361       19456    81092097    f  W95 Ext'd (LBA)
/dev/sdf5           12734       15920    25599546    e  W95 FAT16 (LBA)
/dev/sdf6           15921       19456    28402888+   7  HPFS/NTFS
/dev/sdf7            9361       12588    25923584   83  Linux
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
aficionado
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2011-06-20 09:28 @436

Publicidad

Re: Rotación de ficheros de imágenes

Notapor explorer » 2011-07-05 13:56 @622

Pero hay que saber el nombre de las particiones E y F. Y también saber si estarán montadas en Ubuntu (visibles desde el kernel), o si las tiene que montar el programa.

Y del partimage, no he encontrado información de las opciones que hay que pasar en la línea de comandos, para ejecutarlo con el system().

¿Has averiguado o hecho algo desde el otro día?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Rotación de ficheros de imágenes

Notapor aficionado » 2011-07-06 06:04 @294

Hola, amigo. Bueno, modificando algunas cosas, supongamos el mismo caso, pero cambiamos el destino a un dispositivo USB para guardar las imágenes, ej. un pendrive, el Ubuntu lo tenemos en la partición /dev/sdf7 y el pen hay que montarlo, creo... Esto quiere decir que el partimage se encuentra junto con el Ubuntu 10.10. El script lo vamos a ejecutar desde el Ubuntu en el escritorio. Guardamos el txt.pl y usaremos un pendrive para tener la copia en el bolsillo.
Ahora ¿qué comando uso del partimage para que haga esto mediante el script?
Una vez resuelto esto necesito que la cuarta imagen a guardar me la guarde en lugar de la primera que guardé alguna vez...
Esto es lo que tengo del Partimage:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
partimage (1) imagen parcial del Manual de partimage (1)

NOMBRE
        partimage - una copia de seguridad y restaurar particiones de disco

SINOPSIS
        partimage [-bcdehimMnoSvwy] ['cadena de patrón de respuesta'-B] [-z com-
        presslevel] [-V volumesize] [-f actionatend] [-s servidor] [-p puerto]
        [-a mountoptions] [-U usuario] [-P contraseña] [-g nivel de registro] [guardar
        image_file dispositivo]
        partimage [-bcdehimMnoSvwy] ['cadena de patrón de respuesta'-B] [-z com-
        presslevel] [-V volumesize] [-f actionatend] [-s servidor] [-p puerto]
        [-a mountoptions] [-U usuario] [-P contraseña] [-g nivel de registro] [restauración
        image_file dispositivo / 'stdin']
        partimage [restmbr image_file]
        partimage [imginfo image_file]

DESCRIPCIÓN
        partimage copias de seguridad de las particiones de disco en archivos de imagen y las restaura.

OPCIONES
        z-val, - compress valores
               Imagen de conjunto de archivos de compresión de nivel:
               val = 0: no comprimir: archivo de imagen muy rápido, pero muy grande
               val = 1: comprimir con gzip: archivo de imagen rápido y pequeño (por defecto)
               val = 2: comprimir con bzip2: imagen muy lento y muy pequeño archivo

        -c, - nocheck
                 No marque la partición antes de guardar.

        -o, - overwrite
               Sobrescribir el archivo de imagen sin necesidad de confirmación.

        -d, - nodesc
               No le pida a cualquier descripción para el archivo de imagen.

        Vol-V, - volumen vol
               Dividir la imagen en archivos de varios volúmenes. vol será el tamaño de
               KB de volúmenes.

        -w, - waitvol
               Esperar una confirmación después de cada cambio de volumen.

        -e, - borrar
               Borrar bloques vacíos en la restauración con cero bytes.

        -m, - allowmnt
               No falla si la partición está montada. Peligroso!

        -M, - nombr
               No cree una copia de seguridad de la MBR (registro de arranque del mástil) en la imagen
               archivo.

        -h, - help
  Mostrará la ayuda.

        -v, - version
               Mostrar la versión.

        -f acción - una acción final
               Acción que debe hacer si ha sido satisfactoria:
               action = 0: esperar (no hacer nada)
               action = 1: halt (apagar la computadora)
               action = 2: reiniciar (reiniciar el ordenador)
               action = 3: dejar de fumar

        -b, - batch
               el modo por lotes: la interfaz gráfica de usuario no va a esperar una acción del usuario.

        "Cadena de patrón de respuesta '-B, -" cadena de patrón de respuesta "totalmente lote
               el modo por lotes completo: la interfaz gráfica de usuario no se muestra. en lugar de estado
               los mensajes se muestran como texto normal. La respuesta del patrón
               cadena tiene el siguiente formato:
               "<glob-pattern> = <response-value>;...'
               donde el patrón global se compara con la cadena <ventana
               title> / <message-text> del cuadro de diálogo mensaje de que se dis-
               jugado. Para los cuadros de diálogo con botones en la ventana, el
               <response> debe ser el texto del botón exacto. La respuesta del patrón
               cadena por lo general tiene que ser citado anteriormente.

        -y, - nosync
               No sincronizar los discos en la final de la operación. peligro-
               OU!

        -s dir, - Direcc
               Dar la dirección IP del servidor de partimaged.

        -p puerto, - port puerto
               Dar puerto de escucha del servidor de partimaged.

        -g debuglevel, - debug debuglevel
               El nivel de depuración de debuglevel (por defecto a 1).

        -n, - nossl
               Desactivar SSL en modo de red.

        -S, - simular
               Simulación del modo de restauración.

        -una cadena, - str automnt
               Automática con opciones de montaje X. Lean la documentación para más detalles.

        -U nombre, - nombre de usuario = nombre
               Nombre de usuario para la autenticación en el servidor partimage.

        P-pass, - password = pass
               Contraseña para la autenticación de usuario del servidor partimage.
  Ejemplo
        partimage -z1 -o -d guardar /dev/hda12 /mnt/backup/redhat-6.2.partimg.gz
        partimage -z1 -om guardar /dev/hda9 /mnt/backup/win95-osr2.partimg.gz
        partimage restaurar /dev/hda13 /mnt/backup/suse-6.4.partimg
        cat debian.partimg.000 debian.partimg.001 | partimage restaurar /dev/hda1 stdin
        partimage restmbr /mnt/backup/debian-potato-2.2.partimg.bz2
        partimage imginfo /mnt/backup/debian-potato-2.2.partimg.bz2

VER TAMBIÉN
        partimaged (8)

DIAGNÓSTICO
        Usted puede leer las opciones establecidas en tiempo de compilación ejecutando 'partimage-i'.

        Cuando se utiliza BatchMode, estado de salida es normaly 0.

ADVERTENCIAS
        Sistemas de archivos: ext2/3, Reiser3, FAT16/32, HPFS, JFS, XFS,
        UFS (beta), HFS (beta), NTFS (experimental)

        FAT12 no son compatibles.
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Espero que sirva de algo... Espero tu ayuda

FALLOS
        Consulte el archivo de errores para leerlos.
aficionado
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2011-06-20 09:28 @436

Re: Rotación de ficheros de imágenes

Notapor explorer » 2011-07-06 10:59 @499

Bien. Ahora, como el script lo vas a ejecutar como usuario, debemos comprobar si las acciones que queremos hacer también las podemos realizar como usuario.

Primero, el montaje de la unidad USB. Inserta la unidad y mira a ver si se ha montado de forma automática. Si lo ha hecho, seguramente estará colgando dentro de /mnt o de /media. El problema es que no sabemos con qué nombre habrá aparecido.

Si no sea ha montado de forma automática, hay que ver si, como usuario, puedes ejecutar el comando mount para montarlo. Y antes de eso debes averiguar el nombre del dispositivo en el sistema. Con el comando dmesg salen los mensajes del sistema. En las últimas líneas aparecerá el nombre del nuevo dispositivo que hay enchufado al sistema. Haz la prueba de montarlo en /mnt (que suele estar para estas cosas).

Segundo. Una vez montado, deberás averiguar el comando partimage que debes usar. Por lo que aparece en la página de manual, no hay que usar el valor -f1, porque parece que quiere decir que hay que apagar la máquina una vez terminada la operación, y no queremos que lo haga.

Entonces, a la hora de hacer el programa, éste debe averiguar qué unidad USB se ha conectado, montarlo, hacer un listado de las imágenes disponibles dentro de él. Eliminar todas para que solo queden las dos últimas. Y realizar la operación de partimage, para terminar desmontando la unidad, después de haber ejecutado un par de veces la orden sync, por supuesto)

Con Perl, es sencillo hacer todo eso, salvo una cosa: averiguar el nombre de unidad USB conectada.

Resulta que cada vez que se conecta una unidad USB, no está garantizado que sea siempre sobre el mismo dispositivo (algunas veces será el /dev/sdf, otras veces el /dev/sdg, otras veces irá incrementando de uno en uno...).

Una forma de solventarlo (no probado), sería así: en los Linux modernos, en /dev, se crea un árbol de dispositivos de almacenamiento masivo llamado /dev/disk/by-id/. Ahí, los dispositivos que son USB comienzan por las letras 'usb'. Y son enlaces simbólicos a los dispositivos /dev/sd*. Si el dispositivo está montando, solo hay que ver su contenido. Y si el contenido tiene las imágenes anteriores, entonces ya lo hemos encontrado. Si no está montado, hay que montarlo, y repetir la búsqueda de imágenes. Y acordarse de desmontarlo (dejarlo tal como estaba) al finalizar la operación.

Esto es más trabajo de Linux que de Perl.

¡Adelante!
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Rotación de ficheros de imágenes

Notapor aficionado » 2011-07-06 18:57 @831

¡¡¡¡HOLA AMIGOOOO!!!! TE PIDO UN FAVOR:
ME PASAS UN SCRIPT QUE HAGA SOLAMENTE ESTO ASÍ LO PRUEBO Y AVANZO ALGO.
EL SCRIPT SERÍA:
1-QUE EJECUTE PARTIMAGE ( YO ESTARÍA COMO SUDO O ADMINISTRADOR DEL UBUNTU 10.10) ¡ES EL SISTEMA QUE VOY A USAR!
2-QUE REALICE UNA IMAGEN DE UN DISPOSITIVO ( LE VAMOS A LLAMAR ORIGINAL) YO ESTO DE ORIGINAL LO CAMBIO POR LA PARTICIÓN DONDE TENGA INSTALADO EL S.O SISTEMA OPERATIVO UBUNTU 10.10.
3-Y QUE ESTA IMAGEN CREADA VAYA AL DISPOSITIVO (QUE LE LLAMAREMOS EN ESTE CASO COPIA DE ORIGINAL)
LUEGO VEREMOS LO DEMÁS, TE PARECE...
aficionado
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2011-06-20 09:28 @436

Re: Rotación de ficheros de imágenes

Notapor explorer » 2011-07-06 19:06 @837

Pero yo no conozco ni tengo a mano el partimage... es labor tuya saber cómo ejecutarle en tu sistema. Una vez que lo sepas, lo metemos en el programa.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Rotación de ficheros de imágenes

Notapor aficionado » 2011-07-07 21:25 @934

Hola, amigo. Ya conseguí que el partimage funcionara. Ahora me falta hacer que cuando ya haya guardado 3 imágenes y quiera guardar la cuarta, lo haga en el lugar de la primera. Así creo que sería lo del partimage:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. system "sudo partimage -od -f1 -z1 -b save /dev/sdb1 /img";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


sdb1, porque lo probé con un pen ¿me ayudas con lo otro?
aficionado
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2011-06-20 09:28 @436

Re: Rotación de ficheros de imágenes

Notapor explorer » 2011-07-08 05:20 @264

Bueno, pues con la información que nos das, esta puede ser una solución:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. use File::Copy;
  6.  
  7. # Número máximo de imágenes
  8. my $LIMITE = 3;
  9.  
  10.  
  11. # Nombre de las imágenes
  12. my $nombre_imagen = '/img';
  13.  
  14.  
  15. # Vamos renombrando las imágenes, hasta que llegan al límite, en cuyo caso, las borramos
  16. $LIMITE--;                                      # (empezamos numerando en 0, por lo que restamos uno menos)
  17.  
  18. unlink "$nombre_imagen$LIMITE";                 # Borramos la última imagen
  19. #print "Borrando $LIMITE\n";
  20.  
  21. for (my $i = $LIMITE; $i > 0; $i--) {           # Vamos contando al revés
  22.     my $viejo = $nombre_imagen . ($i-1);
  23.     my $nuevo = $nombre_imagen .  $i   ;
  24.  
  25.     next if not -e $viejo;
  26.  
  27.     move($viejo, $nuevo);                       # Renombramos, incrementando el índice (0->1, 1->2, etc.)
  28.  
  29.     #print "[$viejo]=>[$nuevo]\n";
  30. }
  31.  
  32. # Crear la imagen con partimage, numerado como 0
  33. #system('echo "algo" > img0');
  34. #print "Creando img0\n";
  35. system("sudo partimage -od -f1 -z1 -b save /dev/sdb1 ${nombre_imagen}0");
  36.  
  37. __END__
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Lo he probado de forma simulada y funciona el sistema de renombrado. Lo que no he probado es lo de partimage, desde luego.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Rotación de ficheros de imágenes

Notapor aficionado » 2011-07-08 06:00 @291

¡¡¡Bueno, graciasssss!!!! Para ser exacto, ¿cuáles serían las líneas que debería adaptar? Para correrlo es para estar seguro. Un abrazo.
aficionado
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2011-06-20 09:28 @436

Re: Rotación de ficheros de imágenes

Notapor explorer » 2011-07-08 10:30 @479

La 12 y la 35.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados