2009-10-25 8 views

Respuesta

27

El problema no es tar; el shell no incluye archivos ocultos en *. Do

tar -pczf file.tar.gz * .htaccess 

Y la próxima vez, quizás esta pregunta podría publicarse en SuperUser.

78

La cáscara se está expandiendo * a todos los archivos en el directorio actual que hacen no empiezan por un punto. Esta es la misma regla que usa ls por defecto (por convención, los archivos cuyos nombres comienzan con un punto se consideran "ocultos" en Unix). Pruebe su lugar:

tar -pczf file.tar.gz . 

Usando . al final recogerá todos los archivos en el directorio actual, incluidos aquellos cuyos nombres comienzan con un punto.

+2

Usted * podría * también glob con *. * Como en: "tar -pczf file.tar.gz *. *" –

+8

Tenga en cuenta que '.' agrega una carpeta de nivel superior llamada' .' al archivo tar. –

+0

Supongo que el truco es usar. en lugar de *. –

3

si su tarea le permite subir un nivel de directorio y tar todo el directorio funciona bien y no tiene que recordar nada especial para que funcione (casi siempre me olvido de la otra forma, y ​​termino con TGZ archivos .htaccess que falta)

tar -pczfv httpdocs.tar.gz httpdocs 
+0

Ah, tan elegante :) –

1

Si es posible, por qué no usan:

tar -pczf file.tar.gz `find .` 
Cuestiones relacionadas