você está aqui: Home  → Arquivo de Mensagens

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.



 

 

Veja a relação completa dos artigos de Rubens Queiroz de Almeida

Opinião dos Leitores

Danilo
20 Mai 2011, 16:38
bom para apagar arquivos duplicados
Sergio F.Brandao
29 Dez 2010, 22:01
Para essa mesma finalidade, experimentem algo melhor !

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
Jorge
26 Ago 2010, 13:58
Puxa vida, nem sei a quanto tempo eu esperava por isto.

Vou tentar já!!!
Ulisses
22 Ago 2010, 02:36
Obrigado, muito interessante.
Paulo Alves
20 Ago 2010, 11:14
Sem dúvida uma excelente dica. Também procurei por coisa similar e nada tão simples e direto!
Valeu Queiroz! Abraço!
Wallace Silva
20 Ago 2010, 09:09
AMEI

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
Prefiro criar hardlink
19 Ago 2010, 19:15
Prefiro criar um hardlink para não quebrar nada.
Para isso, uso o ótimo script hardlink.py, disponível em: http://code.google.com/p/hardlinkpy/
Lehnhart
19 Ago 2010, 16:16
SHOW!!!

Estava procurando exatamente isto!!

Já havia testado outras maneiras, mas nenhum é tão rápido e fácil quanto este!

Valeu!!
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script