• 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 pvaldes » 2011-07-08 11:29 @520

Añado cosas

1 - partimage es un programa que dada una determinada partición te hace una copia de la partición en forma de archivo (enorme normalmente), por tanto hablamos de crear un backup de una partición, en bruto y por entero y llevarla a un archivo. Funciona bastante bien.

Estoy seguro de que Perl sabe hacer eso, aunque no sé cómo (¿dump?), y como la idea es en caso de desastre recuperar ese archivo binario y comprimido (que sería ilegible sin partimage) yo no metería programas externos y recomendaría hacerlo desde terminal a pelo. Lo digo porque si Perl modifica mínimamente el archivo por el camino (no tiene por qué ocurrir, pero... y si...) pensaremos que estamos cubiertos y en caso de emergencia nos podemos llevar una sorpresa.

2 - además lo de la rotación no tiene sentido si estudiamos un poco las opciones que estamos mandando.

-od significa que no se crea una imagen nueva sino que se sobreescribe la vieja sin pedir un nuevo nombre, si no hay nuevos archivos no tiene sentido rotarlos.


y 3 -... Ese sistema no funcionará mucho tiempo, por un fallo de diseño.

De entrada en sistemas correctamente administrados la partición raíz es muy pequeña en realidad, /img no cabe, y si te cabe es que no has particionado, y eso es un fallo de seguridad.

Pero es que además es que aunque si cupiese el comando puede tener un problema mayor.

Me explico:

Partición digamos, de 50 gigas, con 5G usados.
Se usa partimage

Si copias una partición cualquiera que NO sea la raíz puede funcionar.

Pero si no tienes la raíz aparte del resto, copias la raíz... y tu partición raíz ahora pesa 8 G, 5 de la partición y 3 G de la imagen (comprimida).
Se actualiza partimage.
Tu partición raíz ahora pesa, digamos, 15 G.
Y en la siguiente vuelta, digamos, 20 o 25G (15 + 15 - la tasa de compresión)... etc.

En pocas vueltas tu partición raíz se verá superada y 5 gigas iniciales de información se han convertido en una masa intratable de basura repetida.

Y el programa acaba fallando, claro...

Si tu idea es copiar la raíz el archivo no puede llamarse /img DEBE de ser una partición aparte montada en un directorio propio.


Seguramente sería interesante incorporar alternativas al debate.
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Publicidad

Re: Rotación de ficheros de imágenes

Notapor aficionado » 2011-07-08 14:57 @664

Hola, amigo. Buena tu observación ¿Dónde lo copiarías vos? En este caso tenemos un HD de 160 con particiones; la E y F están vacías. Mira:
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

Re: Rotación de ficheros de imágenes

Notapor explorer » 2011-07-08 17:39 @777

pvaldes escribiste:1 - partimage es un programa que dada una determinada partición te hace una copia de la partición en forma de archivo (enorme normalmente), por tanto hablamos de crear un backup de una partición, en bruto y por entero y llevarla a un archivo. Funciona bastante bien.
La opción -z sirve para comprimirla en gzip, y una partición suele tener mucho espacio "vacío". Pero sí, hay que tener cuidado de que en el sitio donde vas a crear las imágenes tengas sitio para guardar "n" imágenes.

pvaldes escribiste:Estoy seguro de que Perl sabe hacer eso, aunque no sé cómo (¿dump?), y como la idea es en caso de desastre recuperar ese archivo binario y comprimido (que sería ilegible sin partimage) yo no metería programas externos y recomendaría hacerlo desde terminal a pelo. Lo digo porque si Perl modifica mínimamente el archivo por el camino (no tiene por qué ocurrir, pero... y si...) pensaremos que estamos cubiertos y en caso de emergencia nos podemos llevar una sorpresa.
En el programa que he puesto, Perl no va a "meter mano" en el proceso. Solo va a borrar y renombrar imágenes, y llamar partimage para crear una nueva.

pvaldes escribiste:2 - además lo de la rotación no tiene sentido si estudiamos un poco las opciones que estamos mandando.

-od significa que no se crea una imagen nueva sino que se sobreescribe la vieja sin pedir un nuevo nombre, si no hay nuevos archivos no tiene sentido rotarlos.
Sí tiene sentido si el diseño obliga a guardar el estado de la partición en distintos momentos (por ejemplo, una vez a la semana). Y la opción -od no va a tener efecto porque el programa Perl va a rotar los nombres de las imágenes, así que la nueva imagen siempre se realizará en un nuevo fichero.

pvaldes escribiste:y 3 -... Ese sistema no funcionará mucho tiempo, por un fallo de diseño.

De entrada en sistemas correctamente administrados la partición raíz es muy pequeña en realidad, /img no cabe, y si te cabe es que no has particionado, y eso es un fallo de seguridad.
El sistema funcionará porque buscaremos una partición donde quepan las tres imágenes. Si el usuario que ejecuta el programa no entiende eso, merece que le pase lo que le va a pasar.

pvaldes escribiste:Pero es que además es que aunque si cupiese el comando puede tener un problema mayor.

Me explico:

Partición digamos, de 50 gigas, con 5G usados.
Se usa partimage

Si copias una partición cualquiera que NO sea la raíz puede funcionar.

Pero si no tienes la raíz aparte del resto, copias la raíz... y tu partición raíz ahora pesa 8 G, 5 de la partición y 3 G de la imagen (comprimida).
Se actualiza partimage.
Tu partición raíz ahora pesa, digamos, 15 G.
Y en la siguiente vuelta, digamos, 20 o 25G (15 + 15 - la tasa de compresión)... etc.

En pocas vueltas tu partición raíz se verá superada y 5 gigas iniciales de información se han convertido en una masa intratable de basura repetida.

Y el programa acaba fallando, claro...
No fallará si en la partición raíz hay suficiente espacio. Pero la indicación de usar la partición raíz es de aficionado, que ha dicho que quiere hacerla ahí. Así que si se ha equivocado, tendrá que resolverlo :)

pvaldes escribiste:Si tu idea es copiar la raíz el archivo no puede llamarse /img DEBE de ser una partición aparte montada en un directorio propio.
Los argumentos que se pasan a partimage, los dos últimos, son: nombre de la partición que se va a leer, y nombre del fichero imagen que se va a crear. Si los dos están en el mismo sitio, el problema no está en el programa, sino en el usuario.
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 pvaldes » 2011-07-08 18:56 @830

"Sí tiene sentido si el diseño obliga a guardar el estado de la partición en distintos momentos (por ejemplo, una vez a la semana). Y la opción -od no va a tener efecto porque el programa Perl va a rotar los nombres de las imágenes, así que la nueva imagen siempre se realizará en un nuevo fichero."

En ese caso yo sugeriría un backup incremental mejor (y puesto a buen recaudo), mucho más rápido y eficiente. Partimage es lento, y si tenemos un problema mientras estamos en medio de una copia podemos olvidarnos de esa imagen (y de los cambios en las últimas horas o días).

"Y la opción -od no va a tener efecto porque el programa Perl va a rotar los nombres de las imágenes, así que la nueva imagen siempre se realizará en un nuevo fichero."

A eso voy, no debería activar una opción que nunca va a ser necesaria, va a ralentizar el comando y supone un desperdicio de recursos.

Y ya para acabar, a lo que me refería con lo de buscar alternativas al debate. He estado mirando (someramente) en CPAN pero no veo ningún módulo de Perl específico para copiar byte a byte una partición a un archivo ¿alguien ha usado alguno?
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Re: Rotación de ficheros de imágenes

Notapor explorer » 2011-07-09 05:31 @271

Estoy de acuerdo contigo, pero...

* aficionado dice que tiene que ser con partimage. Sus razones tendrá

* No se puede hacer incremental (palabra que aún no está registrada en el diccionario) ya que las premisas del problema dicen que se han de mantener las tres últimas imágenes, despreciando la cuarta más antigua

* No ha dicho nada de si tenemos un problema a mitad de la copia. Se supone que si quiere un nivel de seguridad más alta, tendrá que ampliar el programa para hacer una comprobación del estado de la imagen creada. Y si está mal, reintentarlo (y aquí entonces tiene sentido la opción de sobreescritura)

* No creo que llegue a 1ms el coste de haber puesto una opción demás en la línea de argumentos :) Partimage solo tendrá que abrir el fichero imagen destino en modo escritura, y listo... todo es labor del sistema operativo.

* En cuanto a copiar una partición byte a byte se puede hacer con un bloque while() simple, haciendo un read() de la partición, en bloques (mejor que en bytes sueltos), y escribiendo hacia la imagen destino (incluso comprimiendo en tiempo real, usando un 'pipe' en el open() de la imagen). En CPAN hay módulos para hacer backup de ficheros y directorios (incluso con rotaciones, como File::Rotate::Backup), pero no conozco ninguno para particiones.
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-09 14:26 @643

Hola, amigos explorer y pvaldes. ¡¡¡¡En primer lugar quiero agradecer su ayuda desmesurada!!!! :p Bueno, les comento lo del script: es una tarea de investigación, no es un capricho mio si no de un profesor... :x les comento que, obviamente, le mostré lo que en gran mayoría ayudo a hacer explorer 8) a lo que el me respondió muy bueno pero yo lo que pretendo es algo más simple :| que ahora lo estoy desarrollando y se los mostraré a la brevedad para que me ayuden si es posible. Esto que voy a hacer es a modo de práctica de investigación así que ya lo verán y para ustedes como se dice acá ¿será una papa?
Última edición por explorer el 2011-07-09 21:15 @927, editado 1 vez en total
Razón: Quitar mayúsculas. Tildes. Ortografía
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-09 21:27 @935

aficionado: no escribas en mayúsculas (tercera regla de la netetiqueta)

No sé qué solución más simple puedes encontrar, con las premisas del problema que has dado...

Veremos.
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-11 15:14 @676

Hola, explorer. Bueno, después de pensar y pensar qué es lo que puedo hacer más fácil es esto. Solo me estaría faltando el comando rm para borrar lo más viejo en tiempo según el date que coloque para que me coloque hora día... y segundos a ver si lo podes revisar. Le coloco el print() para que simule por consola sino voy a romper la PC :(
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #$arch = `date +%d%m%y%H%M%S`;
  2.  
  3. #print "sudo partimage -od -f1 -z1 -b save /dev/sdb1 /home/ies/$arch";
  4. @arch1 = `ls -tl`;
  5.  
  6. #print "@arch1";
  7.  
  8. $tam = @arch1;
  9.  
  10.  
  11. print "@arch1[$tam-1]";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
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-11 18:13 @801

El proceso de borrado de un fichero (lo que tu llamas rm) lo puedes hacer ejecutando el comando rm (con system(), por ejemplo). En mi versión, yo uso la función unlink(), del Perl, que sirve para lo mismo.

Y si vas a resolver el problema con comandos como 'ls' o 'rm', entonces te da lo mismo decir que lo quieres resolver con Perl que con el Shell del sistema... :(

Tu solución tiene un problema: siempre borra un fichero, existan tres, dos o un fichero imagen.
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-11 18:40 @819

Ok, explorer. Ya lo entiendo, pero... ¿me dirías dónde poner el rm para que borre el más viejo de esta lista que sería? En teoría para el Profesor que me enseña esto el tamaño-1 que está vinculado con el ls. Te juro que ya no entiendo lo que el señor éste pretende... Desde ya, muchaaassss gracias. No sabes cuánto valoro tu ayuda.
aficionado
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2011-06-20 09:28 @436

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

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