Al intentar correr
find . -iname "*.gz" -mtime +7 -exec tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz {} \;
me sale la lista de archivos
./corosync.log-20140620.gz
./corosync.log-20140618.gz
./rgmanager.log-20140620.gz
./fenced.log-20140620.gz
./rgmanager.log-20140618.gz
./qdiskd.log-20140618.gz
Pero el archivo sólo obtiene el último elemento.
tar -tvf all_gizip_$(date +%Y-%m-%d).tar.gz
-rw-r--r-- root/root 506 2014-06-18 03:21 ./qdiskd.log-20140618.gz
¿Qué estoy haciendo mal?
Respuesta1
Su comando se ejecuta tar
una vez para cada archivo y cada llamada tar
crea una salida con el mismo nombre, sobrescribiendo así la salida anterior. Entonces terminarás solo con el último archivo. Necesitas algo como
find . -iname "*.gz" -mtime +7 | xargs tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz
Esto debería funcionar bien siempre que su lista de archivos no sea enorme. Si es así, entonces probablemente querrás pasar a usar tar rvf
y realizar un paso separado gzip
al final.