Estou procurando um comando tar que atenda aos seguintes requisitos:
Quero excluir todos os arquivos que terminam com: backwpup & .zip (entre e antes pode ser qualquer um, por exemplo, uploads/123backwpup-123.zip) Quero excluir todas as pastas na área /media/backup/ & /application/cache/
Eu começo em um nível parecido com este:
- exemplo.com
- exemplo.de
- exemplo.org
Com subdiretórios para cada um:
- /etc/
- /httpdocs/
- /lib/
- ...
Somente o conteúdo de /httpdocs/ precisa ser salvo.
Eu tentei com o comando:
tar --exclude={"*backwpup*.zip", "*/media/backup/*", "*/application/cache/*"} -czvf backup.tar.gz **/httpdocs
Mas infelizmente backups com caminhowp-content/uploads/backwpup-4578-backups/2022-10-31_12-22-31_IKXUCSLD01.zipainda estão incluídos.
Responder1
Você pode tentar usar o seguinte 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 exclui todos os arquivos que terminam com “backwpup” ou “.zip”, bem como pastas nos locais especificados. Também inclui apenas os subdiretórios "httpdocs" em cada diretório de domínio
Responder2
Talvez desta forma?
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 -
Responder3
Supondo que você esteja usando GNU tar, consulte a documentação sobre como excluir arquivos:https://www.gnu.org/software/tar/manual/html_node/exclude.html Isso detalha a correspondência de padrões:https://man7.org/linux/man-pages/man7/glob.7.html
Supondo que você use o GNU BASH, você poderia percorrer os diretórios usando um loop for:https://www.gnu.org/software/bash/manual/html_node/Looping-Constructs.htmlusando expansão de nome de arquivo (https://www.gnu.org/software/bash/manual/html_node/Filename-Expansion.html)
No final desta página estão bons exemplos: https://linuxize.com/post/bash-for-loop/