Comando de copia de seguridad tar para excluir archivos de copia de seguridad y caché e incluir solo subdirectorios httpdocs

Comando de copia de seguridad tar para excluir archivos de copia de seguridad y caché e incluir solo subdirectorios httpdocs

Estoy buscando un comando tar que cumpla con los siguientes requisitos:

Quiero excluir todos los archivos que terminan en: backwpup y .zip (entre y antes puede haber cualquiera, por ejemplo, uploads/123backwpup-123.zip). Quiero excluir todas las carpetas en el área /media/backup/ & /application/cache/

Empiezo en un nivel que se parece a este:

  • ejemplo.com
  • ejemplo.de
  • ejemplo.org

Con subdirectorios para cada uno:

  1. /etc/
  2. /httpdocs/
  3. /lib/
  4. ...

Sólo es necesario guardar el contenido de /httpdocs/.

Lo probé con el comando:

tar --exclude={"*backwpup*.zip", "*/media/backup/*", "*/application/cache/*"} -czvf backup.tar.gz **/httpdocs

Pero lamentablemente las copias de seguridad con la rutawp-content/uploads/backwpup-4578-backups/2022-10-31_12-22-31_IKXUCSLD01.ziptodavía están incluidos.

Respuesta1

Puedes intentar usar el siguiente comando tar:

tar --exclude='backwpup.zip' --exclude='/media/backup/' --exclude='/application/cache/' -czvf backup.tar.gz example.com/httpdocs example.de/httpdocs example.org/httpdocs

Este comando excluye todos los archivos que terminan en "backwpup" o ".zip", así como las carpetas en las ubicaciones especificadas. También incluye solo los subdirectorios "httpdocs" en cada directorio de dominio.

Respuesta2

¿Quizás de esta manera?

find * -type d \( -path '*/media/backup/*' -o -path '*/application/cache/*' \) -prune -o -path '*/httpdocs/*' -type f ! -name '*backwpup*.zip' -print0 | tar -czvf backup.tar.gz --null -T -

Respuesta3

Suponiendo que esté utilizando GNU tar, consulte la documentación sobre cómo excluir archivos:https://www.gnu.org/software/tar/manual/html_node/exclude.html Esto detalla la combinación de patrones:https://man7.org/linux/man-pages/man7/glob.7.html

Suponiendo que usa GNU BASH, puede recorrer los directorios usando un bucle for:https://www.gnu.org/software/bash/manual/html_node/Looping-Constructs.htmlusando la expansión del nombre de archivo (https://www.gnu.org/software/bash/manual/html_node/Filename-Expansion.html)

Al final de esta página hay buenos ejemplos: https://linuxize.com/post/bash-for-loop/

información relacionada