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

317
Visualizações
Cómo leer archivos de configuración con sección en bash Shell

Tengo el archivo de configuración como este en secciones

 [rsync_includes] user data conf [rsync_exclude] tmp .pyc */vendor [javascript] utils data

Tengo los patrones que quiero excluir en rsync y otros datos de configuración en ese archivo

Ahora estoy confundido, ¿cómo puedo usar esos patrones en la línea de comandos?

 rsync -avz --exclude-from 'content from config file rsync exclude' source/ destination/

No estoy seguro de cómo puedo leer parte del archivo de configuración y luego usarlo en la línea de comando

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

0

Para usar --exclude-from , deberá aislar la sección relevante de la configuración en un archivo temporal. Esto es fácil de hacer con un poco de sed:

 tmp_file=$(mktemp) sed -n '1,/rsync_exclude/d;/\[/,$d;/^$/d;p' config.file > $tmp_file rsync -avz --exclude-from $tmp_file source/ destination/

Estoy omitiendo la comprobación de errores y la limpieza para mayor claridad.

Tenga en cuenta que rsync puede leer el patrón de exclusión de la entrada estándar para una entrada - por lo que esto es aún más corto:

 sed -n '1,/rsync_exclude/d;/\[/,$d;/^$/d;p' config.file | \ rsync -avz --exclude-from - source/ destination/

Explicación

  • El 1,/rsync_exclude/d excluye todas las líneas hasta la entrada de la sección rsync_exclude
  • /\[/,$d excluye todo, desde el inicio de la siguiente sección hasta el final del archivo
  • El /^$/d excluye líneas vacías (esto es opcional)

Todo lo anterior extrae la sección relevante de la configuración.

over 4 years ago · Santiago Trujillo Relatório

0

Si su archivo de configuración está en config.ini , ejecute un script bash:

 rm rsync-filter while IFS= read -r line do case "$line" in \[rsync_includes\]) command=include ;; \[rsync_exclude\]) command=exclude ;; \[*) command= ;; *) [ "$command" -a "$line" ] && echo "$command $line" >>rsync-filter esac done <config.ini

Después de que se ejecuta, crea un filtro rsync que contiene las reglas de inclusión y exclusión y se puede usar con rsync como:

 rsync -avz --filter='merge rsync-filter' source/ destination/

Por separado, rsync ofrece la opción -F que es equivalente a --filter='dir-merge /.rsync-filter' . Esto carga las reglas de inclusión/exclusión del archivo /source/.rsync-filter y, además, a medida que rsync se adentra más en el árbol de directorios, buscará y cargará las reglas de los archivos .rsync-filter que encuentre y aplicará esas reglas a archivos en ese directorio y sus subdirectorios. Esta es una forma poderosa de mantener y organizar las reglas de rsync.

Además, el orden en que rsync lee las reglas de inclusión y exclusión es importante. Con estos archivos de filtro, conserva el control sobre ese pedido. Esa es una ventaja importante cuando intenta que las reglas de rsync funcionen correctamente.

over 4 years ago · Santiago Trujillo Relatório

0

Admito que no estoy familiarizado con rsync, pero yo mismo formatearía esos datos de manera diferente.

 # rsync-data-file+.txt rsync-includes:user rsync-includes:data rsync-includes:conf rsync-exclude:tmp rsync-exclude:.pyc rsync-exclude:\*\/vendor javascript:utils javascript:data

A partir de ahí, puede hacer lo siguiente: -

 #!/usr/bin/env bash set -x while read line do if [ $(echo "${line}" | sed -n '/rsync-includes/'p) ] then parameter=$(echo "${line}" | cut -d':' -f2) rsync "${parameter}" (other switches here etc) fi done < rsync-data-file+.txt

De esta manera, puede personalizar su línea de comando según el grupo al que pertenezca el parámetro; por lo tanto, con los parámetros del grupo javascript, puede registrar las operaciones en un archivo diferente, por ejemplo.

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