Correspondência de padrões de números complexos Rsync

Correspondência de padrões de números complexos Rsync

Estou trabalhando na migração de um grande site WordPress e quero migrar apenas imagens originais. Não quero copiar as imagens que o WordPress cria. Usando o rsync, não vejo uma maneira nos documentos de levar em conta as múltiplas variações de tamanhos de imagem e excluí-las. O melhor que consegui foi criar uma regra para cada cenário possível de tamanho de imagem. Isso é o melhor que vou conseguir ou há uma maneira de SECAR isso?

Como um exemplo:

rsync -avPzn -e ssh webhost:/site/www.domain.com/images . 
--exclude=**\-[0-9][0-9]x[0-9][0-9].jpg 
--exclude=**\-[0-9][0-9][0-9]x[0-9][0-9].jpg 
--exclude=**\-[0-9][0-9]x[0-9][0-9][0-9].jpg 
--exclude=**\-[0-9][0-9]x[0-9][0-9].png 
--exclude=**\-[0-9][0-9][0-9]x[0-9][0-9].png 
--exclude=**\-[0-9][0-9]x[0-9][0-9][0-9].png 
...

Uma imagem nomeada image.jpgterá várias cópias nomeadas image-100x100.jpg, etc.

Responder1

Em vez disso, você pode canalizar para o rsync a lista de arquivos que deseja copiar e usar outro meio para excluir os nomes de imagens indesejados. Isso pode ser tão simples quanto usar finduma exclusão de expressão regular, por exemplo:

ssh webhost find /site/www.domain.com/images \
  ! -regex '.*[0-9]+x[0-9]+\.\(png\|jpg\)' | \
rsync -avPzn --files-from=- webhost:/ .

Observe que o regex tem uma sintaxe implícita ^e $usa o emacs por padrão. Você pode preferir uma versão posix:

-regextype posix-extended -regex '.*[0-9]+x[0-9]+\.(png|jpg)'

Se o seu findcomando não tiver essas opções, você pode usar sedou similar para filtrar os nomes dos arquivos. Como a localização produz nomes de caminhos completos, você precisa usar o rsync /como base.

informação relacionada