De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 19 de agosto de 2010
Em tempos de Internet, Youtube, cameras digitais, etc. o seu computador logo se enche de fotos, vídeos, músicas, apresentações, e um monte de outras coisas. Com cameras digitais então a situação é bem pior. Será que você já baixou as fotos de sua camera? Na dúvida, baixamos de novo. E o lixo vai aumentando, pois ninguém quer perder nada.
Em sistemas GNU/Linux, você pode usar o programa fdupes
, que é um
programa invocado a partir da linha de comando para localizar arquivos
duplicados dentro de uma estrutura de diretórios. O programa funciona
através do cálculo da assinatura md5
dos arquivos. Este algoritmo é utilizado para verificar a integridade de
arquivos. É comum em servidores FTP publicar os arquivos juntamente com sua
assinatura MD5. Ao baixar o arquivo, basta verificar o MD5 e verificar se
bate com a assinatura MD5 publicada pelo distribuidor do arquivo. Se estiverem
iguais, significa que o arquivo não foi corrompido durante a transferência.
Desta forma, se a assinatura MD5 de dois arquivos for igual, significa também que os arquivos são iguais. Vejamos como o programa funciona. Da forma mais simples, basta invocar o programa e especificar o diretório a ser analisado:
$ fdupes tmp
tmp/filme0.wmv
tmp/copiafilme0.wmv
tmp/filme3.wmv
tmp/copiafilme3.wmv
...
O arquivo copiafilme0.wmv
é uma cópia do arquivo filme0.wmv
.
O comando agrupa sempre os arquivos semelhantes. No exemplo acima, cada arquivo possuía uma cópia. Note que existe uma linha em branco entre cada listagem.
O fdupe
pode fazer mais, como por exemplo, uma busca recursiva:
$ $ fdupes -r tmp > duplicatas.txt
É recomendável salvar a saída em um arquivo (duplicatas.txt
) para que
depois se possa resolver o que fazer com as cópias.
Uma outra alternativa, a ser usada com muito cuidado, é apagar, junto com a execução do programa, os arquivos duplicados:
$ fdupes -d tmp
[1] tmp/filme0.wmv
[2] tmp/copiafilme0.wmv
[3] tmp/copia2filme0.wmv
Set 1 of 10, preserve files [1 - 3, all]: 1
[+] tmp/filme0.wmv
[-] tmp/copiafilme0.wmv
[-] tmp/copia2filme0.wmv
[1] tmp/filme3.wmv
[2] tmp/copiafilme3.wmv
Set 2 of 10, preserve files [1 - 2, all]:
O programa me pergunta qual arquivo eu devo preservar. Na primeira instância,
eu optei por preservar o arquivo 1, tmp/filme0.wmv
. Os demais foram
apagados. Isto pode ser visto na saída que o comando exibiu após eu ter
digitado o número 1
. Os arquivos apagados foram precedidos dos caracteres
[-]
. Outra observação, a frase Set 1 of 10
indica que foram encontrados
dez conjuntos de arquivos duplicados.
No exemplo anterior, eu tenho que especificar o arquivo que desejo preservar. Para situações em que temos centenas de arquivos, isto pode ser bastante demorado. Para apagar os arquivos sem exigir confirmação, utilize a seguinte sintaxe (mas tome muito cuidado!):
$ fdupes -d -N tmp
É claro que se você tiver centenas de arquivos duplicados, este processo pode ser bastante entediante e propenso a erros. Para poucos diretórios a opção de deleção é válida. Para um número maior de arquivos, talvez seja melhor montar um script ou algo do tipo.
Como sempre, antes de realizar qualquer tarefa que pode envolver perda de dados, leia o manual com atenção e execute o comando com muito cuidado.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários