Eu tenho um script rsync de trabalho, que atravessa recursivamente nossa estrutura de diretórios e carrega um arquivo .publish
por diretório. Cada arquivo contém uma lista de arquivos a serem publicados. Publicar significa copiar arquivos de um repositório git interno, não totalmente de código aberto, para um repositório completo de código aberto. A pasta de destino (chamada exportação) é então enviada para o GitHub. Desta forma foi escolhido, porque ou não temos todos os direitos sobre os arquivos para publicá-los, ou alguns arquivos precisam de um retrabalho antes de ir a público:).
Um arquivo .publish
se parece com este:
# git files
.gitempty
# Documentation
README.md
# Package
sync.pkg.vhdl
# Clock-Domain-Crossing (CDC) circuits
sync_Bits.files
sync_Bits.vhdl
sync_Reset.files
sync_Reset.vhdl
sync_Strobe.files
sync_Strobe.vhdl
sync_Vector.files
sync_Vector.vhdl
sync_Command.files
sync_Command.vhdl
# Altera specific implementations
sync_Bits_Altera.vhdl
sync_Reset_Altera.vhdl
# Xilinx specific implementations
sync_Bits_Xilinx.vhdl
sync_Reset_Xilinx.vhdl
Estou procurando uma possibilidade de mesclar as linhas *.vhdl
e *.files
em uma linha, usando algo como: sync_Command\.(vhdl|files)
(sintaxe regexp).
Pesquisei a página do manual do rsync , mas acabei de encontrar o curinga *
, que parece ser um pouco para geral.
Existe a possibilidade de especificar várias extensões de arquivo por linha?
Esta é a minha linha de comando rsync:
rsyncOptions=( \
--archive \
--itemize-changes \
--human-readable \
--verbose \
'--filter=:en+ .publish' \
'--filter=- *' \
'--filter=P .git' \
'--filter=P .gitmodules' \
'--filter=P lib/*' \
--delete --delete-excluded --prune-empty-dirs \
--stats)
rsync "${rsyncOptions[@]}" "$src/" "$dst/"
Tags rsync rules file-filter