Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

263
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!