
Estructura de carpetas:
etc (dir)
deploy (dir)
src (dir)
config (dir)
dist
├- config (dir)
├- index.js
Lo que me gustaría hacer es empaquetar todo excepto la carpeta de configuración raíz y colocarla en un archivo tar en formato deploy
. Es importante que la dist/config
carpeta esté presente en la salida. Comenzó con:
tar -czf deploy/deploy.gz --exclude=deploy --exclude="./config/" ./*
$ l ./deploy/deploy0/dist
index.js
router.js
test
Pero eso resulta en una falta dist/config
. La única manera de poder dist/config
venir es si no intento excluir nada llamado config:
tar -czf deploy/deploy.gz --exclude=deploy ./*
$ l ./deploy/deploy1/dist
config
index.js
router.js
test
OSX y CentOS (desarrollo y compilación). el hombre paraalquitránMe hace pensar que esto no es posible.
Solucioné esto simplemente eliminando las carpetas que no quiero, ya que se encuentra en un entorno de compilación y los archivos son desechables.
Respuesta1
Podrías usar find
para crear tus argumentos, aunque un poco largo:
find -mindepth 1 ! -wholename './config' ! -wholename './config/*'
mindepth 1
para excluir .
y dos wholename
exclusiones para el directorio en sí, así como su contenido.
tar -xzf deploy/deploy.gz --exclude="deploy" \
$( find -mindepth 1 ! -wholename './config' ! -wholename './config/*' )
Respuesta2
Usar una referencia de punto al directorio actual como raíz de archivo es un ancla:
tar --exclude='./deploy' --exclude='./config' -cvf deploy/deploy.tar .
Pero si usa un nombre de directorio o un comodín, la --anchored
bandera le ayudará:
tar --anchored --exclude=deploy --exclude=config -cvf deploy/deploy.tar *
Respuesta3
Asegúrese de poner --exclude
opciones antes de los argumentos de origen y destino.
tar --exclude=deploy --exclude="./config" -cvz deploy/deploy.gz .
Respuesta4
Puede utilizar ./
un marcador al principio de sus archivos excluidos.
Yo lo uso de esta manera:
tar --exclude='./build.tar.gz' --exclude='./config' -czf build.tar.gz .