¿Qué otras herramientas debo usar para leer y escribir archivos con truncamiento, búsqueda y omisión? Las opciones de línea de comando de dd parecen inconvenientes y extrañas y no me gusta elegir entre el modo de búsqueda lento, pero preciso ( bs=1
) y el modo rápido, pero inflexible ( bs=4k
o lo que sea).
¿Existen herramientas más modernas para leer 555 bytes de un archivo (o tubería o socket o dev) desde la posición 31337 y escribirlos en el otro archivo en la posición 128205 (usando los bloques 512 + 43), con o sin truncamiento?
dd
. Siempre puede colocar un envoltorio de script de shell a su alrededor si no le gusta la interfaz.dd
está en el estándar POSIX , que es una gran ventaja.status=noxfer
no es predeterminada y está rota y que necesitoiflag=fullblock
(omitir en algún script => datos rotos).bs=1
=> toda la tubería es lenta. Por ejemplo, es posible que desee volcar el archivo de video a partir de un cuadro exacto. 2. "Se necesita algo de aritmética" => no muy adecuado para líneas y comandos de rutina.dd conv=seek_bytes
hará elseek
trabajo con precisión de byte.Respuestas:
Existe la herramienta
ddrescue
(cuidado, tambiéndd_rescue
hay un programa diferente con casi la misma funcionalidad). Utiliza la sintaxis más familiar con el guión único para guiones cortos o dobles para opciones largas. Desde la página del manual:fuente
ddrescue - -
->Infile and outfile are the same.
,ddrescue /dev/stdin /dev/stdout
->Infile and outfile are the same.
. Mal comienzo de la historia ...dd_rescue
. Lanza una advertencia de que el archivo (stdin) no se puede buscar, pero continúa. Puedes darle una oportunidad. Sin embargo, seddrescue
siente más completo y maduro.ddrescue
es correcto, las tuberías no son buscables. Si desea comenzar a leer en un punto específico de un archivo, debe darle acceso al archivo en cuestión, no a los datos canalizados desde otro programa. También tenga en cuenta que el uso de tuberías lucha contra este deseo suyo para obtener la máxima velocidad, ya que la única forma de emular la búsqueda en una tubería es leer y tirar las partes que no desea procesar. Buscar dentro de un archivo real es mucho más eficiente.dcfldd es otra alternativa dd. No aborda la pregunta del OP sobre la flexibilidad de búsqueda de entrada / salida, pero puede ser útil para otras personas que llegan aquí a través de la búsqueda de Google.
Está basado en gnu dd, con las siguientes características adicionales:
fuente
Una buena alternativa es
pv
. No solo calcula automáticamente el tamaño de bloque más eficiente, esencialmente acelerando las cosas, sino que también proporciona progreso, entre otras cosas. Su uso es simple:También juega bien con la compresión. Una forma rápida de hacer una copia de seguridad y comprimir un disco en un solo movimiento es así:
Puedes aprender más aquí .
fuente