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 --dereference
opció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/app1
también contiene enlaces y aquellos que no quiero seguir.
¿Es esto posible con algunos cambios en el tar
comando? ¿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.