Discussion:
tar no me reconoce la opción ignore-failed-read
dev null
2014-06-25 13:03:28 UTC
Permalink
Hola a todos!,

estoy tratando de hacer un script sencillo el cual hace un backup de algunos directorios grandes y según si acaba bien o mal me envia un e-mail.
La verdad es que es una cosa sencilla ya que lo hago con tar y gzip pero me encuentro con el problema de que tar me saca un error de "nombre archivo: file changed as we read it". Esto es debido a que entiendo que es un archivo de log que va escribiendo continuamente y en el momento que tar lo está empaquetando el archivo ha cambiado. Hasta aquí todo correcto. He rebuscado por internet y dan como solución la opción de tar "--ignore-failed-read" ya que no lo quiero considerar como un error en el backup cuando hay errores de lectura que no se pueden leer.
El problema es que aun añadiendo esta opción se sigue quejando y al comprobar el resultado con la variable $? da como resultado error (o sea diferente de 0).

He probado con todas las combinaciones:

/bin/tar --ignore-failed-read -Pcvf archivo.tar.gz /directorio/
/bin/tar -Pcvf --ignore-failed-read archivo.tar.gz /directorio/
/bin/tar -Pcvf archivo.tar.gz --ignore-failed-read /directorio/
[...]

También he leido algo por internet de algún bug y he actualizado el tar a la ultima versión que he encontrado de suse:

# tar --version
tar (GNU tar) 1.27.1

Alguien puede echarme una manita ?

gracias a todos

____________________________________________________________
FREE 3D EARTH SCREENSAVER - Watch the Earth right on your desktop!
Check it out at http://www.inbox.com/earth
Carlos E. R.
2014-06-25 13:23:15 UTC
Permalink
Post by dev null
Hola a todos!,
estoy tratando de hacer un script sencillo el cual hace un backup de algunos directorios grandes y según si acaba bien o mal me envia un e-mail.
La verdad es que es una cosa sencilla ya que lo hago con tar y gzip pero me encuentro con el problema de que tar me saca un error de "nombre archivo: file changed as we read it". Esto es debido a que entiendo que es un archivo de log que va escribiendo continuamente y en el momento que tar lo está empaquetando el archivo ha cambiado. Hasta aquí todo correcto. He rebuscado por internet y dan como solución la opción de tar "--ignore-failed-read" ya que no lo quiero considerar como un error en el backup cuando hay errores de lectura que no se pueden leer.
El problema es que aun añadiendo esta opción se sigue quejando y al comprobar el resultado con la variable $? da como resultado error (o sea diferente de 0).
No creo que sea "--ignore-failed-read" lo que necesitas.

Sin usarlo, te da error o aviso?

Mirando rápido por la documentación (info tar), he visto la sección
"10.1.3 Race conditions". Habla justamente de esto.
--
Cheers / Saludos,

Carlos E. R.
(from 13.1 x86_64 "Bottle" at Telcontar)
Carlos E. R.
2014-06-26 12:58:02 UTC
Permalink
Por favor, acuérdate de responder a la lista, no en privado.
Post by Carlos E. R.
No creo que sea "--ignore-failed-read" lo que necesitas.
Sin usarlo, te da error o aviso?
no sé si es error o aviso, entiendo que es un aviso.
consultado $? después de eso veo que siempre me da valor 1.
Tal vez podría poner en el script que si el resultado de $? es 0 o 1 ha acabado bien y en caso contrario considerarlo como error?
hay alguna lista de los valores que puede tener $?
Seguro, pero hay que buscarla en la documentación.

A ver. Encontré algo:

3.1 General Synopsis of `tar'

Possible exit codes of GNU `tar' are summarized in the following
table:

0
`Successful termination'.

1
`Some files differ'. If tar was invoked with `--compare'
(`--diff', `-d') command line option, this means that some files
in the archive differ from their disk counterparts (*note
compare::). If tar was given `--create', `--append' or `--update'
option, this exit code means that some files were changed while
being archived and so the resulting archive does not contain the
exact copy of the file set.

2
`Fatal error'. This means that some fatal, unrecoverable error
occurred.
Post by Carlos E. R.
Mirando rápido por la documentación (info tar), he visto la sección
"10.1.3 Race conditions". Habla justamente de esto.
le he estado echando un ojo y no tengo las opciones de snapshot o parar procesos para que no hagan uso de estos archivos :-\
Claro, es que si son cosas como bases de datos, el propio motor de la
base de datos debe generar una foto consistente de su estado en un
instante dado. Básicamente consiste en que el motor retrasa las
operaciones de escritura, que guarda en otro fichero, hasta que la copia
de seguridad termina; y en ese momento aplica los cambios pendientes.

El resultado es una copia consistente en otro directorio, que puede ser
en el mismo formato binario de los ficheros originales, o un volcado en
texto u otro formato.


Si usas un sistema de ficheros como XFS tienes opciones específicas para
hacer fotos. Y con btrfs, también, pero distinto.

Otra opción es usar un raid 1 (espejo), sacar uno de los lados del
espejo, fotografiarlo, y volver a ponerlo. Obviamente, si en ese momento
el disco en uso peta, se te cae todo.

No se si existe algún tipo de raid con tres espejos :-?

Lo que sí existe es sacar un lado, y poner el "spare" (puede ser hot
spare automático). Le sacas la foto tranquilamente al que acabas de
sacar, y a continuación lo re-añades como spare.

Claro, hay un rato, que puede ser enorme, durante el cual el spare se
está reconstruyendo. No se si hay alguna opción para ir activando una
tercera copia poco a poco, para reemplazar rápidamente, de golpe, a uno
de los activos al dar un comando.

Todo esto es teórico, pero lo veo factible.
--
Cheers / Saludos,

Carlos E. R.
(from 13.1 x86_64 "Bottle" at Telcontar)
dev null
2014-06-27 06:54:33 UTC
Permalink
Por favor, acuérdate de responder a la lista, no en privado.
si, disculpa, pensaba que por defecto se respondía a la lista :-)
Post by Carlos E. R.
No creo que sea "--ignore-failed-read" lo que necesitas.
Sin usarlo, te da error o aviso?
no sé si es error o aviso, entiendo que es un aviso.
consultado $? después de eso veo que siempre me da valor 1.
Tal vez podría poner en el script que si el resultado de $? es 0 o 1 ha
acabado bien y en caso contrario considerarlo como error?
hay alguna lista de los valores que puede tener $?
Seguro, pero hay que buscarla en la documentación.
3.1 General Synopsis of `tar'
Possible exit codes of GNU `tar' are summarized in the following
0
`Successful termination'.
1
`Some files differ'. If tar was invoked with `--compare'
(`--diff', `-d') command line option, this means that some files
in the archive differ from their disk counterparts (*note
compare::). If tar was given `--create', `--append' or `--update'
option, this exit code means that some files were changed while
being archived and so the resulting archive does not contain the
exact copy of the file set.
Creo con esto me vale, en mi casi si retorna 1 lo puedo dar por valido
2
`Fatal error'. This means that some fatal, unrecoverable error
occurred.
Post by Carlos E. R.
Mirando rápido por la documentación (info tar), he visto la sección
"10.1.3 Race conditions". Habla justamente de esto.
le he estado echando un ojo y no tengo las opciones de snapshot o parar
procesos para que no hagan uso de estos archivos :-\
Claro, es que si son cosas como bases de datos, el propio motor de la
base de datos debe generar una foto consistente de su estado en un
instante dado. Básicamente consiste en que el motor retrasa las
operaciones de escritura, que guarda en otro fichero, hasta que la copia
de seguridad termina; y en ese momento aplica los cambios pendientes.
El resultado es una copia consistente en otro directorio, que puede ser
en el mismo formato binario de los ficheros originales, o un volcado en
texto u otro formato.
Si usas un sistema de ficheros como XFS tienes opciones específicas para
hacer fotos. Y con btrfs, también, pero distinto.
Otra opción es usar un raid 1 (espejo), sacar uno de los lados del
espejo, fotografiarlo, y volver a ponerlo. Obviamente, si en ese momento
el disco en uso peta, se te cae todo.
No se si existe algún tipo de raid con tres espejos :-?
Lo que sí existe es sacar un lado, y poner el "spare" (puede ser hot
spare automático). Le sacas la foto tranquilamente al que acabas de
sacar, y a continuación lo re-añades como spare.
Claro, hay un rato, que puede ser enorme, durante el cual el spare se
está reconstruyendo. No se si hay alguna opción para ir activando una
tercera copia poco a poco, para reemplazar rápidamente, de golpe, a uno
de los activos al dar un comando.
Todo esto es teórico, pero lo veo factible.
le echare un ojo a los FS que comentas.
Definitivamente --ignore-failed-read no hacía lo que yo creía, esto sirve para que retorne 0 (exitoso) el tar si por ejemplo no encuentra el directorio a copiar

gracias Carlos

____________________________________________________________
FREE ONLINE PHOTOSHARING - Share your photos online with your friends and family!
Visit http://www.inbox.com/photosharing to find out more!

____________________________________________________________
FREE 3D MARINE AQUARIUM SCREENSAVER - Watch dolphins, sharks & orcas on your desktop!
Check it out at http://www.inbox.com/marineaquarium

Loading...