Use o rsync para copiar todos os arquivos, exceto determinados nomes de arquivos com uma certa extensão


28

Tenho dois cartões flash do mesmo tamanho e quero copiar o conteúdo de um para o outro com base nas seguintes regras:

  1. Quero todos os diretórios e subdiretórios no lugar
  2. Quero excluir arquivos do tipo .FOO, .BAR e .ZIM (todos os outros arquivos são copiados)
  3. Bônus: Seria legal se os nomes dos arquivos fossem copiados, pois são copiados ~ 8 GB de informações

Isso poderia ser feito com "find" de alguma forma?

Respostas:


41

Isso seria significativamente mais fácil usando o rsync com seu --excludeswitch.

rsync -av --exclude='*.FOO' --exclude='*.BAR' --exclude='*.ZIM' /source /dest

A -vopção fornecerá uma saída detalhada na qual os arquivos estão sendo sincronizados.


Pouco acompanhamento aqui: a cópia terminou e / src / * está agora em / dest / src / * Como usar o rsync para obter / src / * em / dest / *?
macek

Tente/source/ /dest
John T

Isso não funciona. Ainda estou vendo arquivos * .FOO sendo copiados.
Jake

É especificado como você deve indicar o caminho --exclude. Se você tiver problemas, verifique esta resposta .
totymedli

0

Se você tiver um grande número de extensões para excluir, poderá criar um arquivo e anotar toda a extensão ou arquivo para excluir e usar apenas uma opção de exclusão para simplificar.

rsync -ravz --exclude = '. / abc, txt' / fonte / dest

É sempre bom usar a opção z para compactação er se você precisar copiar recursivamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.