cpio VS alquitrán y cp

cpio VS alquitrán y cp

Acabo de enterarme de que cpio tiene tres modos: copia, copia y transferencia.

Me preguntaba cuáles son las ventajas y desventajas de cpio en los modos de copia y entrada sobre tar. ¿Cuándo es mejor usar cpio y cuándo tar?

Pregunta similar para cpio en modo de transferencia versus cp.

¡Gracias y saludos!

Respuesta1

Esta es una descripción general extremadamente genérica:

CPIO hace un mejor trabajo al duplicar un sistema de archivos, incluida la realización de copias de seguridad. Conserva cosas como enlaces duros, fifos y otras características de archivos no estándar. La mayoría de las implementaciones de CPIO hacen todo lo que hace TAR, incluida la lectura y escritura de archivos .tar. CPIO normalmente toma una lista de archivos de la entrada estándar para archivarlos; esto hace que sea muy fácil canalizar una lista desde otra cosa (como find).

El paso a través de CPIO es muy útil si tiene una lista muy larga de archivos que desea copiar del directorio A al directorio B. (Por ejemplo, puede usarlo findpara ubicar todos los archivos que han cambiado en los últimos 2 años en su sistema)

TAR hace un mejor trabajo simplemente volcando todos sus archivos estándar hacia/desde una cinta (o archivo de almacenamiento). Es un poco más sencillo de usar (para las tareas más comunes). Satisface fácilmente las sencillas demandas de copia de seguridad de la mayoría de las personas; y la mayor parte de su popularidad se debe a este hecho.

Y ahora la letra pequeña. Existen varias versiones e implementaciones diferentes de CPIO y TAR. Cada uno tiene características diferentes y algunos tienen diferentes opciones de línea de comando. Hay cosas que cada uno puede hacer donde el otro no; Si te encuentras limitado por uno, prueba el otro. Todo el mundo tiene un favorito y el 99% de las veces cualquiera de los dos realizará la tarea.

Respuesta2

En AE 3 redhat, descubrí que cpio tenía una limitación de tamaño de 2 GB en un flujo de salida. Sin embargo, tar no tenía esta limitación.

Otros sistemas pueden tener limitaciones diferentes.

Respuesta3

Por los comentarios y otros antecedentes, entiendo que cpioahora es menos omnipresente y es inconsistente entre las versiones. Pero cpiotiene una ventaja que recientemente encontré invaluable al tratar con una gran cantidad de archivos tar corruptos. No se detiene ante el primer error en un archivo tar, sino que intenta omitir datos incorrectos y extraer la mayor cantidad posible. Por ejemplo,

tar xf ./sample.corrupt.tar

imprimirá

tar: Skipping to next header
tar: Exiting with failure status due to previous errors

después del primer error encontrado, mientras que

cpio -F ./sample.corrupt.tar -i -v

imprimirá los archivos extraídos y para cada error imprimirá:

cpio: invalid header: checksum error
cpio: warning: skipped 6 bytes of junk

cpio: invalid header: checksum error
cpio: warning: skipped 2 bytes of junk

etc...

El formato tar espera que cada encabezado de archivo esté alineado en un límite 512, pero si la corrupción desalinea los encabezados, cpiohace el mejor esfuerzo para extraer tanto como sea posible.

Respuesta4

No veo ninguna razón para usar cpio por ningún otro motivo que no sea copiar archivos RPM abiertos, a través dedisrpmorpm2cpio, pero puede haber casos extremos en los que cpio sea preferible a tar.

Historia y popularidad

Ambosalquitránycpioson formatos de archivo competidores que se introdujeron enVersión 7 Unixen 1979 y luego incluido enPOSIX.1-1988, aunque solo quedó tar en el siguiente estándar, POSIX.1-20011.

El formato de archivo de Cpio ha cambiado varias veces y no sigue siendo totalmente compatible entre versiones. Por ejemplo, ahora existe una representación codificada en ASCII de datos de información de archivos binarios.

Tar es más conocido universalmente, se ha vuelto más versátil a lo largo de los años y es más probable que sea compatible con un sistema determinado. Cpio todavía se utiliza en algunas áreas, como laPaquete Red Hatformato (RPM), aunqueRPM v5(que es ciertamente oscuro) utilizaxaren lugar de cpio.

Ambos se encuentran en la mayoría de los sistemas tipo Unix, aunque tar es más común. Aquí estánEstadísticas de instalación de Debian:

#rank  name    inst    vote    old  recent  no-files  (maintainer)
   13   tar  189206  172133   3707   13298        68  (Bdale Garbee)
   61  cpio  189028   71664  96346   20920        98  (Anibal Monsalve Salazar)

Modos

Copiar afuera: Esto es para la creación de archivos, similar atar -pc

Copiar: Esto es para extracción de archivos, similar atar -px

Pasar por: Esto es básicamente las dos cosas anteriores, similar tar -pc … |tar -pxpero en un solo comando (y por lo tanto microscópicamente más rápido). Es similar a cp -pdr, aunque tanto cpio como (especialmente) tar tienen más posibilidades de personalización. Considere también rsync -a, que la gente suele olvidar, ya que normalmente se utiliza a través de una conexión de red.

No he comparado su rendimiento, pero espero que sean bastante similares en CPU, memoria y tamaño de archivo (después de la compresión).

información relacionada