sábado, 20 de junho de 2015

Localizando arquivos duplicados no terminal com fdupes

Fdupes é um excelente programa para localizar arquivos duplicados pelo terminal, podendo fazer também a exclusão dos arquivos duplicados por ele.
O fdupes analisar o md5sum de todos os arquivos e não somente o nome dos mesmos, portanto você pode até renomear o arquivo duplicado com outro nome diferente que o fdupes saberá que se trata do mesmo arquivo. Vale lembrar que um arquivo com mesmo nome idêntico, mas com conteúdo diferente, mesmo que seja de apenas um caractere a mais ou a menos não é um arquivo duplicado, já que o md5sum do mesmo será diferente e portanto os mesmos não serão listados como duplicados.

Para localizar arquivos duplicados com o fdupes é necessário sempre especificar um nome de diretório.

Opções mais usadas são:
-r = incluir subdiretórios
-S = exibi os tamanhos dos arquivos
-d = excluir arquivos duplicados
-m = informações da quantidade de arquivos duplicados
-h = ajuda

Localizar arquivos duplicados

$ fdupes -r /mnt/dados
$ fdupes -r documentos/

Notas:
O fdupes exibi um indicador de porcentagem durante a procura.
Ao exibir o resultado da procura o fdupes agrupa sempre os arquivos semelhantes e coloca uma linha em branco entre cada listagem, para facilitar sua compreensão.


Exemplo curto para demostrar a procura pelo fdupe

Estrutura de diretórios a partir do diretório Documentos, que contém os subdiretórios atestar e prov.

$ tree 
|-- Criando vídeos com efeitos com o ffmpeg usando filtros.odt 
|-- ffmpeg.pdf 
|-- atestar 
|   |-- avarias.txt 
|   |-- myfirewall 
|   `-- varias.txt 
|-- fundo.png 
|-- postar.odt 
`-- prov 
    `-- varias.txt 

2 directories, 8 files 

Onde avarias.txt é exatamente o mesmo arquivo varias.txt em que copiei o mesmo com outro nome diferente.

$ fdupes -r Documentos/ 
Documentos/atestar/varias.txt           
Documentos/prov/varias.txt 
Documentos/atestar/avarias.txt 

Veja que ele acusou que o avarias.txt é exatamente o mesmo arquivo varias.txt, pois o seu conteúdo é idêntico e que também tem outro varias.txt no subdiretório prov.

Nota:
Se você tiver uma partição, HD externo ou diretório com vários gigabytes e milhares de arquivos principalmente se os mesmos forem maiores que 100 MB este processo poderá demorar bastante.

Numa partição com 164.774 arquivos num total de 165 GB levou 45 minutos para conclusão total em uma cpu Core2Duo de 2.4 Ghz.

Se você tiver uma grande quantidade de arquivos duplicados o bom é redirecionar a procura para um arquivo no disco para analisar com calma a melhor altitude a tomar. Exemplo: fdupes -r /Documentos > fdupes.log


Excluído arquivos duplicados

$ fdupes -r -d  Documentos/ 
[1] Documentos/atestar/varias.txt       
[2] Documentos/prov/varias.txt 
[3] Documentos/atestar/avarias.txt 

Set 1 of 1, preserve files [1 - 3, all]: 2 

   [-] Documentos/atestar/varias.txt 
   [+] Documentos/prov/varias.txt 
   [-] Documentos/atestar/avarias.txt 

Continuado a utilizar os mesmos arquivos do exemplo curto, ele avisa que existe 3 duplicações de um mesmo arquivo e pergunta qual você deseja preservar destes 3 arquivos, sendo que eu digitei 2 e teclei Enter, sendo então excluídos automaticamente o arquivo 1 e 3 e no final ele apresenta lista de todos os arquivos que foram preservados e excluídos com o caminho dos mesmos.
Os que tiver  [-] foram excluídos e os que tiver  [+] foram os arquivos preservados.
A frase Set 1 of 1, preserve files diz que foi encontrado um conjunto de arquivos duplicados, ou seja, apenas 1 arquivo duplicado, caso fosse 5 arquivos duplicados o 5 vai depois de of.

Nota:
Se quiser preservar todos os arquivos duplicados do mesmo nome apresentado, digite all e tecle Enter, que ele passa para o próximo conjunto de arquivo duplicado caso houver.

Se você tiver um diretório com uma grande quantidade de arquivos duplicados para excluir com fdupes pode ficar cansativo já que você terá que escolher qual deles preservará, mas para poucos arquivos não é trabalhoso.

Obtendo a informações das quantidade de arquivos duplicados

$ fdupes -r -m  Documentos/ 
8 duplicate files (in 4 sets), occupying 1.6 megabytes 

No exemplo acima existe 4 conjuntos de arquivos duplicados (4 tipos de arquivos diferentes em que existem duplicação dos mesmos), sendo no total 8 duplicações de arquivos que ocupam 1.6 MB de espaço em disco.

Download fdupes

Procure no repositório de sua distro por fdupes, caso não tiver você também pode baixar o sources em http://fdupes.googlecode.com/files/fdupes-1.51.tar.gz
para compilação.

Para que usa o Slackware e derivados com o sbopkg:
$ sudo sbopkg -i fdupes

Nenhum comentário:

Postar um comentário