Desreferencia de tar solo 1 nivel

Desreferencia de tar solo 1 nivel

Utilizo el siguiente pseudoscript para crear un TAR de mi software instalado

mkdir tmp
ln -s /path/to/app1/bin              tmp/app1
ln -s /and/path/going/to/the-app-2   tmp/app2
tar -c --dereference -f apps.tar tmp

Necesito la --dereferenceopción aquí para seguir los enlaces que acabo de hacer en tmp. La razón por la que hago los enlaces en primer lugar es para almacenar los directorios con un nombre diferente en el archivo al que tienen en el sistema de archivos.

Hasta ahora ha funcionado bien. Sin embargo, ahora tengo la situación que /path/to/app1también contiene enlaces y aquellos que no quiero seguir.

¿Es esto posible con algunos cambios en el tarcomando? ¿O necesito cambiar completamente la forma en que construyo el archivo?

Respuesta1

No creo que haya una manera de tener solo una desreferencia parcial. Podrías hacer algo como

tar -cf apps.tar /path/to/app1/bin /and/path/going/to/the-app-2

y luego extraerlos a una raíz diferente usando -C

-C, --directorio=DIR

         change to directory DIR

p.ej

mkdir tmp
tar -C tmp -xf apps.tar

lo que tendría un efecto similar a la forma en que crea actualmente su archivo.

También puedes usar -C para apuntar a cualquier directorio existente.

Respuesta2

¿Realmente necesita que la estructura de directorios en el tarball sea diferente a la del disco?

Si no, entonces puedes simplemente modificarlos tal como están:

tar -cf file.tar /path/1 /path/2

Respuesta3

En lugar de vincular, podría copiar. Desafortunadamente agregaría algo más de sobrecarga (los archivos son bastante grandes). Por supuesto, crecería como máximo el doble, ya que el alquitranado en sí también es una forma de copia.

Respuesta4

Si es así root, lo mejor que puede hacer es usar el comando bind de mount para vincular básicamente los directorios que desea crear, en lugar de vincularlos simbólicamente. Entonces no necesitarás utilizar la opción de desreferencia.

mkdir tmp
mount --bind /path/to/app-1 tmp/app-1
mount --bind /path/to/app-2 tmp/app-2
tar cf apps.tar tmp

Asegúrese de desmontar esos directorios antes de que les suceda algo accidentalmente. Verestas advertencias.

información relacionada