No cree el archivo tar en el directorio que está empaquetando:
tar -czf /tmp/workspace.tar.gz .
hace el truco, excepto que extraerá los archivos en todo el directorio actual cuando desempaquete. Mejor hacer:
cd ..
tar -czf workspace.tar.gz workspace
o, si no conoce el nombre del directorio en el que se encontraba:
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(Esto supone que no siguió enlaces simbólicos para llegar a donde está y que el shell no intenta adivinarlo saltando hacia atrás a través de un enlace simbólico; bash
no es confiable en este sentido. Si tiene que preocuparse por eso, usar cd -P ..
para hacer un directorio de cambios físicos. Es estúpido que no sea el comportamiento predeterminado en mi opinión, confuso, al menos, para aquellos para quienes cd ..
nunca tuvo un significado alternativo).
Un comentario en la discusión dice:
Necesito [...] excluir el directorio superior y necesito [...] colocar el tar en el directorio base.
La primera parte del comentario no tiene mucho sentido: si el archivo tar contiene el directorio actual, no se creará cuando extraiga el archivo de ese archivo porque, por definición, el directorio actual ya existe (excepto en circunstancias muy extrañas ).
La segunda parte del comentario se puede tratar de dos formas:
- O bien: cree el archivo en otro lugar,
/tmp
es una ubicación posible, y luego muévalo a la ubicación original una vez que esté completo.
- O: si está usando GNU Tar, use la
--exclude=workspace.tar.gz
opción. La cadena después de =
es un patrón, el ejemplo es el patrón más simple, una coincidencia exacta. Es posible que deba especificar --exclude=./workspace.tar.gz
si está trabajando en el directorio actual en contra de las recomendaciones; es posible que deba especificar --exclude=workspace/workspace.tar.gz
si está subiendo un nivel como se sugiere. Si tiene varios archivos tar para excluir, use ' *
', como en --exclude=./*.gz
.