comprimir dd backup sobre la marcha

23

Tal vez esto suene como una pregunta tonta, pero la forma en que intento hacerlo no funciona.

Estoy en livecd, la unidad está desmontada, etc.

Cuando hago una copia de seguridad de esta manera

sudo dd if=/dev/sda2 of=/media/disk/sda2-backup-10august09.ext3 bs=64k

... normalmente funcionaría, pero no tengo suficiente espacio en el disco duro externo al que estoy copiando (casi encaja). Entonces quería comprimir de esta manera

 sudo dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz

... pero obtuve permisos denegados. No entiendo.

Phil
fuente
2
No lo hagas Esto no es una copia de seguridad. Verifique los comandos 'volcado' y 'restaurar'.
Juliano
O alquitrán o cpio ....
chris
1
Juliano, ¿qué quieres decir con "esto no es una copia de seguridad"?
Phil
55
Esto no es una copia de seguridad porque las copias de seguridad son serias, están bien estructuradas y utilizan herramientas adecuadas destinadas a crear copias de seguridad. Solo está haciendo una copia de los datos sin procesar de una partición. Para restaurar estos datos, necesitará otra partición con la misma geometría, que no está garantizada. Además, si daña un solo bloque de su archivo (superbloque, tablas de inodo, directorio raíz, etc.), corre el riesgo de perder todos sus datos. Con una copia de seguridad adecuada, esto no sucedería.
Juliano
77
"Para restaurar estos datos, necesitará otra partición con la misma geometría, lo cual no está garantizado" ¿Por qué necesitaría eso, no puede montar la imagen de la partición en un dispositivo de bucle invertido?
Kyle Brandt

Respuestas:

41

¿Tiene acceso al archivo sda2-backup ... gz? Sudo solo funciona con el comando después y no se aplica a la redirección. Si desea que se aplique a la redirección, ejecute el shell como root para que todos los procesos secundarios también sean root:

sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz"

Alternativamente, puede montar el disco con las opciones de montaje uid / gid (suponiendo ext3) para que tenga permisos de escritura como el usuario que sea. O use root para crear una carpeta en / media / disk para la que tenga permisos.

Otra información que podría ayudarlo:

  • El tamaño del bloque solo es importante para la velocidad en su mayor parte. El valor predeterminado es 512 bytes que desea conservar para el MBR y los disquetes. Los tamaños más grandes hasta un punto deberían acelerar las operaciones, piense que es análogo a un búfer. Aquí hay un enlace a alguien que hizo algunos puntos de referencia de velocidad con diferentes tamaños de bloque. Pero debe hacer sus propias pruebas, ya que el rendimiento está influenciado por muchos factores. Mira también la otra respuesta de andreas
  • Si desea lograr esto a través de la red con ssh y netcat para que el espacio no sea un gran problema, consulte esta pregunta de servidor por defecto .
  • ¿Realmente necesita una imagen de la partición, podría haber mejores estrategias de copia de seguridad?
  • ¡dd es un comando muy peligroso, úsalo en oflugar de ify terminas sobrescribiendo lo que estás intentando hacer una copia de seguridad! ¿Notan cómo las teclas oy iestán una al lado de la otra? Así que ten mucho, mucho, mucho cuidado.
Kyle Brandt
fuente
Intentaré esto. ¿Cómo lo hago también bs = 64k? (¿y tengo que hacerlo?)
Phil
Bs = 64k solo hace que la transferencia sea más rápida porque dd leerá bloques de 64k cada uno en lugar del tamaño de bloque predeterminado de (no recuerdo).
Chris
Lo que dijo Chris, y si desea incluirlo, póngalo después de dd y antes del símbolo de tubería (|), ya que es un argumento para dd.
Kyle Brandt
1
También ocasionalmente usaré "sudo tee $ file> / dev / null" en una tubería para permitir la escritura en un archivo al que mi cuenta de usuario no tiene acceso también.
Rik Schneider
6

En el primer caso, el dd se ejecuta como root.

En el segundo caso, el dd se ejecuta como root pero el gzip se ejecuta como usted.

Cambia los permisos en / media / disk, date un shell de root o ejecuta gzip como root también.

Chris
fuente
3

Además, puede reemplazar gzip bzip2 --bestpor una compresión mucho mejor:

sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2
dmityugov
fuente
3
A un costo de mucho tiempo. Consulte changelog.complete.org/archives/… "Cómo pensar en la compresión" para obtener más detalles.
Bill Weiss
@BillWeiss: Gracias por tu comentario, ¡lectura muy interesante!
andreas
compresión: lzma> bzip2> gzip .. velocidad: gzip> bzip2> lzma. A menos que esté publicando la imagen del disco en Internet, no hay mucho beneficio para el tiempo, la potencia de la CPU y la memoria que está gastando para una mejor compresión.