GNU/Linux >> Tutoriales Linux >  >> Linux

Dividir y fusionar:¿¡con DVD!?

Digamos que tengo un archivo grande llamado foo.tar.xz .
Dividí el archivo en partes de poco menos de 4,7 GB cada una, usando split -b 4689887232 foo.tar.xz foo.tar.xz. , que me da archivos llamados foo.tar.xz.aa , foo.tar.xz.ab , etc.
Luego escribo cada archivo en un DVD diferente y se lo envío a Alice usando una paloma mensajera bastante grande.

Ahora Alice podría insertar cada DVD, copiar cada archivo a su PC y luego usar cat y xz para obtener el contenido de foo :cat foo.tar.xz.* | tar xfJ -

Ahora suponga que Alice tiene suficiente espacio en su PC para almacenar los contenidos extraídos de foo . ¿Hay algún sabor de cat? que leerá estos archivos directamente desde los DVD y pausará la transmisión para permitirle insertar el siguiente DVD? Algo así como pausecat o volumecat ?

Respuesta aceptada:

No conozco tal cat sabor, pero aquí hay una solución que casi funciona:

  1. En una terminal, ejecute mkfifo myfifo; tail -c +1 -f myfifo | tar xfJ -
  2. Inserte el primer DVD en la unidad de DVD-ROM (por ejemplo, dev/sr0).
  3. En una segunda terminal, ejecute dd if=/dev/sr0 of=myfifo
  4. Cuando dd completa, extraiga el DVD.
  5. Si tiene otro DVD, insértelo en la unidad de DVD-ROM y vaya al paso 3; de lo contrario, vaya al paso 6.
  6. En la primera terminal, presiona CTRL-C para matar a tail y tar .

Cómo funciona

El truco es usar tail para leer continuamente desde una canalización con nombre. La salida de tail luego se canaliza al comando que desea ejecutar. Inicialmente, la tubería no está abierta, por lo que no sucede nada. Pero cuando comienzas a bombear datos a la tubería con dd , tail lo recoge y lo reenvía a su mando.

La magia ocurre cuando se detiene el flujo de datos a la tubería:tail mantiene abierto su descriptor de archivo de salida estándar, lo que hace que su comando se detenga. Mientras tanto, tail simplemente espera más información.

El problema

La razón por la que dije que casi funciona es porque parece haber un problema de almacenamiento en búfer que causa tail no escribir el último bit de datos que se introduce en él. Mi esperanza es que alguien pueda proporcionar la información para abordar esto.

Relacionado:¿Dividir un campo de cadena en una matriz en jq?
Linux
  1. Encuentre archivos y péguelos (con espacios)

  2. Usando sed para dividir una cadena con un delimitador

  3. Usar find y tar con archivos con caracteres especiales en el nombre

  4. Unir videos con pantalla dividida

  5. crear tar con múltiples directorios y ubicaciones de archivos

Cómo descargar y extraer archivos Tar con un solo comando

Tar Vs Zip Vs Gz:diferencia y eficiencia

PDF Split and Merge 'PDFSAM' hace exactamente lo que dice

Primeros pasos con el comando Tar

Instalación y primeros pasos con Git

Comando dividido de Linux con ejemplos