Similar a ésto pregunta y esto pregunta Me gustaría crear un solo archivo tar comprimido (files.tar.gz) que contenga todos los archivos php en mi webroot y todos sus subdirectorios, manteniendo la estructura de carpetas. Mi webroot se llama 'public_html'.
No he probado nada todavía porque no estoy seguro de por dónde empezar. La segunda pregunta que vinculé en realidad se acerca mucho a lo que estoy buscando, pero hace que cada archivo encontrado sea un GZ separado, si lo leo bien.
En realidad, la naturaleza monolítica del alquitrán es más importante para mí que la compresión de gzip. Solo quiero colocar este archivo en mi máquina de Windows donde puedo buscarlo con las herramientas a las que estoy acostumbrado.
find . -name '*.html' -print | xargs echo
en mi propio webroot. imprime un linea sola . Por lo tanto, el ejemplo 2 al que está vinculado crea un solo archivoRespuestas:
find -iname '*.php' -print0 | xargs -0 tar -rf php_backup.tar
Esto utiliza la segunda respuesta a la que está vinculado, pero reemplaza la
-c
con-r
De man tar:
Otra opción sería reemplazar el -print0 con -exec. Creo que será más eficiente, pero podría romperse si tienes miles o diez de miles de archivos.
[Editar]
1) La opción -print0 y -0 después de xargs solo son necesarias si tiene separadores inconvenientes en sus nombres de archivo. (leer nombres con espacios). Puede que no necesites esos.
2) Revisé el comando otra vez y lo probé.
find /public_www -name '*.php' -print | xargs
alimenta una sola línea a xargs. Por lo tanto, el ejemplo que has vinculado se traduce en algo así comoxargs -0 tar -cf docs.tar *.php
y también debería funcionar.fuente