Qual é a melhor maneira de comparar duas estruturas de diretório e excluir arquivos e diretórios estranhos no local de destino?
Eu tenho um pequeno aplicativo de galeria de fotos da Web que estou desenvolvendo. Os usuários adicionam e removem imagens usando FTP. O software de galeria da web que escrevi cria novas miniaturas rapidamente, mas não lida com exclusões. O que eu gostaria de fazer é agendar um script de comando / bash para cuidar disso em intervalos predefinidos.
As imagens originais são armazenadas /home/gallery/images/
e organizadas em álbuns, usando subdiretórios. As miniaturas são armazenadas em cache /home/gallery/thumbs/
, usando a mesma estrutura de diretório e nomes de arquivos que o diretório de imagens.
Eu tentei usar o seguinte para conseguir isso:
rsync -r --delete --ignore-existing /home/gallery/images /home/gallery/thumbs
o que funcionaria bem se todas as miniaturas já tivessem sido armazenadas em cache, mas não há garantia de que esse seria o caso; quando isso acontecer, o diretório thumb terá imagens originais em tamanho original copiadas para ele.
Como posso alcançar da melhor maneira o que estou tentando fazer?
rmdir
?find
e no[
teste]
. Obviamente, tenha muito cuidado com o comando que eu lhe dei e quaisquer modificações, e teste completamente comecho
!Você precisa
--existing
também:Na página de manual:
fonte
--ignore-errors
argumento. Essa é a única coisa que funcionou para mim. Obrigado por--existing
e--ignore-existing
! Eu usei sua resposta como base da minha resposta aqui .rm
,cp
oumv
funcionarão, é isso que são os erros: são problemas que devem ser observados e que impedem que as operações sejam concluídas com êxito. Você pode instruir a maioria das ferramentas a ignorar erros (por exemplo,-f
pararm
), mas não vejo como isso é relevante para a pergunta ou esta resposta.