Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

264
Visualizações
Uso de alquitrán en script bash

Tengo la siguiente estructura de directorios:

 /test_dir/logs: admin-access.log admin-access.log00001 admin-access.log00002 admin-access.log00003 admin-access.log00004 admin-access.log00005 /test_dir/installer_logs: AITimeListener.log installer.log /test_dir/servers/clust1/logs/: clust1.out clust1.out00001 clust1.out00002 clust1.out00003 clust1.out00004

Estoy usando el siguiente conjunto de comandos para archivar la carpeta con exclusiones:

 cd /test_dir/ tar -czhf /backup/test_dir_node01_2016-02-19_initial.tgz --anchored --exclude "logs/*" --exclude "servers/*/logs/*" --exclude "installer_logs/*" *

Y como resultado, obtuve la siguiente estructura de directorios después de archivar untar:

 /backup/logs: no files here /backup/installer_logs: no files here /backup/servers/clust1/logs/: no files here

Estoy tratando de codificar el script bash que se supone que debe hacer lo mismo y sin suerte, aquí está mi código:

archivo backup.parameters:

 NC_HOME=/test_dir BACKUP_HOME=/backup EXCLUDE_LIST=" --exclude \"logs/*\" --exclude \"servers/*/logs/*\" --exclude \"installer_logs/*\" "

archivo backup_initial.sh

 #!/bin/bash if [ ! -f backup.parameters ]; then echo "backup.parameters file not found! exiting...."; exit 1; fi . ./backup.parameters TAR_ARGS="czf" DATE=`date +%F` HOSTNAME=`hostname` cd $NC_HOME echo "Initial backup started on $HOSTNAME at `date \"+%F %T\"`" tar -czhf $BACKUP_HOME/$(basename $NC_HOME)_"$HOSTNAME"_"$DATE"_initial.tgz --anchored $EXCLUDE_LIST * echo "Initial backup finished on $HOSTNAME at `date \"+%F %T\"`" echo "Initial backup location: $BACKUP_HOME/$(basename $NC_HOME)_"$HOSTNAME"_"$DATE"_initial.tgz"

Después de descomprimir el archivo creado por el script, veo que todavía hay archivos en los directorios de exclusión:

 /backup/logs: admin-access.log admin-access.log00001 admin-access.log00002 admin-access.log00003 admin-access.log00004 admin-access.log00005 /backup/installer_logs: AITimeListener.log installer.log /backup/servers/clust1/logs/: clust1.out clust1.out00001 clust1.out00002 clust1.out00003 clust1.out00004

Por favor, ayuda, ¿cómo puedo codificar esto? Tampoco me aconsejen que use la opción -X. Realmente necesito hacerlo con --exclude.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Intente cambiar EXCLUDE_LIST a:

 EXCLUDE_LIST=( --exclude 'logs/*' --exclude 'servers/*/logs/*' --exclude 'installer_logs/*' )

Y luego expandirlo así:

 tar -czhf ... --anchored "${EXCLUDE_LIST[@]}" *

La razón por la que lo que está haciendo ahora no funciona es porque EXCLUDE_LIST se está expandiendo a --exclude --exclude "logs/*" ... . Las comillas dobles no se eliminan y siguen siendo parte del argumento, por lo que el patrón no coincide con nada, ya que no tiene ningún archivo o directorio que tenga comillas dobles en sus nombres.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda