Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Remoção de arquivos duplicados em sistemas GNU/Linux
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.
É 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.
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
20 Mai 2011, 16:38
29 Dez 2010, 22:01
Tenho conhecimento de um utilitário gráfico muito mais amigável, que provavelmente utiliza o fdupes como camada abaixo da interface gráfica - Trata-se do "fslint" que pode ser facilmente instalado no ubuntu e outras distribuições baseadas na Debian !
pode ser instlado com o comando:
sudo apt-get install fslint
(Não esquecer de incluir de incluir repositório de referência requerido para a instalação.
Veja descrição do pacote abaixo:
>
Pacote: fslint
Estado: instalado
Automaticamente instalado: não
Versão: 2.40-2
Prioridade: opcional
Seção: universe/admin
Mantenedor: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Tamanho Descompactado: 877k
Depende de: python (>= 2.3), python-gtk2 (>= 2.4), python-glade2, findutils (>= 4.1.1)
Descrição: A utility to fix problems with filesystems' data, like duplicate files
FSlint is a toolkit to clean filesystem lint. It includes a GTK+ GUI as well as a command line interface and can be used to reclaim disk space. It has an
interface for uninstalling packages, and it can find things like:
* Duplicate files
* Problematic filenames
* Temporary files
* Bad symlinks
* Empty directories
* Nonstripped binaries
Homepage: http://www.pixelbeat.org/fslint/
<
Experimentem vão adorar, pois é facilmente configurável para realizar diversas operações de comparação, deleção, mesclagem identiicação de arquivos iguais com nomes diferentes, e muito mais.
Acredito que esteja disponível também para outras distribuições de GNU Linux igualmente !
Boa Sorte e que lhes seja útil - Ass. Sérgio F.Brandão
26 Ago 2010, 13:58
Vou tentar já!!!
22 Ago 2010, 02:36
20 Ago 2010, 11:14
Valeu Queiroz! Abraço!
20 Ago 2010, 09:09
eu sempre quis algo assim, procuro há meses, mas pelo que vejo sempre procurei errado, inacreditavel, ja criei scripts, e tudo o mais e é tal simples fdupes, CARAMBA
Cara tu mudou toda a minha forma de trabalhar, sem noção,
MUITO OBRIGADO, MESMO MESMO MESMO,
abraços
vlw
19 Ago 2010, 19:15
Para isso, uso o ótimo script hardlink.py, disponível em: http://code.google.com/p/hardlinkpy/
19 Ago 2010, 16:16
Estava procurando exatamente isto!!
Já havia testado outras maneiras, mas nenhum é tão rápido e fácil quanto este!
Valeu!!




