Necesito eliminar todos los archivos que no sean php de un servidor linux o descargarlos

Tengo miles de archivos, tal vez cientos de miles de archivos en un servidor Linux y están en directorios y subdirectorios.

Todos los archivos están ubicados en /home/sas/httpdocs -

Quiero obtener una copia de todo el directorio con solo los archivos php, pero conservando la misma estructura de directorio:

Tengo dos opciones:

elimine TODOS los archivos que no sean php, luego cárguelo y descárguelo -

O simplemente extraiga solo todos los archivos php en un nuevo directorio pero manteniendo la misma estructura de directorio:

¿Alguna idea sobre cómo hacer esto?

sas

preguntado el 17 de marzo de 12 a las 15:03

3 Respuestas

Esto solo copiará php archivos en un directorio separado

cd /home/sas/httpdocs
tar -cf - `find . -name "*.php" -print` | ( cd /destination_dir && tar xBf - )

Hay otro método para eliminar archivos que no son php. Aquí está, detallado con elegancia.

https://superuser.com/questions/168130/unix-delete-files-and-folders-excluding-pattern

respondido 20 mar '17, 10:03

¿Mantendrá la misma estructura de directorios? - Sarfaraz Jamal

Sip. Mantendrá la misma estructura de directorios. - Pavan Manjunath

Entonces, si quisiera que el alquitrán subiera una carpeta, ¿lo haría así? --- - Sarfaraz Jamal

alquitrán -cf - find . -name "*.php" -print | ( cd /home/sas/files.tar && tar xBf - ) - Sarfaraz Jamal

Funcionó para mí con una muestra básica de 16 archivos en una estructura de directorios de 2 niveles... (+1) Gracias - Pedro.O

Usar rsync podría ser una opción:

rsync -av --include "*/" --include "*.php" --exclude "*" /home/sas/httpdocs/. /copy/dir/

respondido 17 mar '12, 16:03

¿Cuánto tiempo llevará esto? Ejecuté el comando tar anterior y todavía se está ejecutando. ¿RSYNC podría al menos aparecer un poco más rápido? ¿Sabes? Tengo más de 100 XNUMX archivos en uno o dos directorios, tal vez... Sarfaraz Jamal

rsync debería ser más rápido porque no es necesario descomprimir y descomprimir todos los archivos. rsync hace la copia directamente. - Arnaud F.

La tar El método utiliza un paso directo desde el alquitrán de entrada de las personas acusadas injustamente llamadas alquitrán de salida; La única sobrecarga "extra" es recopilar rutas e información de la estructura del directorio y luego envía los archivos a través de la tubería al tar de salida ... Esto es más o menos lo que rsync haría en esta situación ("esto", lo que significa que no puede utilizar su capacidad para escribir solo secciones de datos modificados) ... Así que creo que sería bastante equilibrado aquí ... rsync estaría bien también... (+1)... - Pedro.O

Para eliminar el archivo que no termina en .php:

find /dir -type f ! -name "*.php" -print

Cuando esté satisfecho con la salida, reemplace el -print by -delete.

respondido 17 mar '12, 19:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.