
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.jpg
terá 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 find
uma 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 find
comando não tiver essas opções, você pode usar sed
ou similar para filtrar os nomes dos arquivos. Como a localização produz nomes de caminhos completos, você precisa usar o rsync /
como base.