Eu tenho um backup antigo de documentos. No meu Documents
diretório atual, existem muitos desses arquivosem locais diferentes com nomes diferentes. Estou tentando encontrar uma maneira de mostrar quais arquivos existem no backup que fazemnãoexiste no Documents
diretório, de preferência agradável e GUI-y para que eu possa facilmente ter uma visão geral de ummuitode documentos.
Quando procuro essa pergunta, muitas pessoas procuram maneiras de fazer o oposto. Existem ferramentas comoFSlinteDupeGuru, mas eles mostram duplicatas. Não há modo de inversão.
Responder1
Se você estiver pronto para usar a CLI, o seguinte comando deverá funcionar para você:
diff --brief -r backup/ documents/
Isso mostrará os arquivos exclusivos de cada pasta. Se desejar, você também pode ignorar casos de nomes de arquivos com o--ignore-file-name-case
Como um exemplo:
ron@ron:~/test$ ls backup/
file1 file2 file3 file4 file5
ron@ron:~/test$ ls documents/
file4 file5 file6 file7 file8
ron@ron:~/test$ diff backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8
ron@ron:~/test$ diff backup/ documents/ | grep "Only in backup"
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Além disso, se quiser relatar apenas quando os arquivos diferem (e não relatar a 'diferença' real), você pode usar a --brief
opção como em:
ron@ron:~/test$ cat backup/file5
one
ron@ron:~/test$ cat documents/file5
ron@ron:~/test$ diff --brief backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Files backup/file5 and documents/file5 differ
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8
Existem várias ferramentas de comparação visual como meld
essas que podem fazer a mesma coisa. Você pode instalar meld
a partir do repositório do universo:
sudo apt-get install meld
e use a opção "Comparação de diretórios". Selecione a pasta que deseja comparar. Após a seleção, você pode compará-los lado a lado:
fdupes
é um excelente programa para localizar arquivos duplicados, mas não lista os arquivos não duplicados, que é o que você está procurando. No entanto, podemos listar os arquivos que não estão na fdupes
saída usando uma combinação de find
e grep
.
O exemplo a seguir lista os arquivos exclusivos do backup
.
ron@ron:~$ tree backup/ documents/
backup/
├── crontab
├── dir1
│ └── du.txt
├── lo.txt
├── ls.txt
├── lu.txt
└── notes.txt
documents/
├── du.txt
├── lo-renamed.txt
├── ls.txt
└── lu.txt
1 directory, 10 files
ron@ron:~$ fdupes -r backup/ documents/ > dup.txt
ron@ron:~$ find backup/ -type f | grep -Fxvf dup.txt
backup/crontab
backup/notes.txt
Responder2
Tive o mesmo problema com muitos arquivos muito grandes e há muitas soluções para duplicatas, mas não para pesquisa invertida, e também não queria pesquisar diferenças de conteúdo devido à grande quantidade de dados.
Então eu escrevi este script python para procurar por "arquivos isolados"
isolated-files.py --source folder1 --target folder2
isso mostrará todos os arquivos (recursivamente) na pasta2 que não estão na pasta1 (também recursivamente). Também pode ser usado em conexões ssh e com múltiplas pastas.
Responder3
Achei que o melhor fluxo de trabalho para mesclar backups antigos com milhares de arquivos arquivados em diretórios diferentes com nomes diferentes é usardupeGuruafinal. Parece muito com oduplicatasguia deFSlint, mas tem o recurso extra importante de adicionar fontes como'referência'.
- Adicione seu diretório de destino (por exemplo
~/Documents
, ) como umreferência.- Areferênciaé somente leitura e nenhum arquivo será removido
- Adicione seu diretório de backup comonormal.
- Encontre duplicatas. Remova todas as duplicatas encontradas no backup.
- Você fica apenas com arquivos exclusivos no diretório de backup. UsarFreeFileSyncouCombinarpara mesclá-los ou mesclá-los manualmente.
Se você tiver vários diretórios de backup antigos, faz sentido mesclar o diretório de backup mais recente como este primeiro e depois usar esse diretório de backup como umreferênciapara limpar as duplicatas dos backups mais antigos antes de mesclá-los no diretório principal do documento. Isso protege ummuitode trabalho onde você não precisa remover arquivos exclusivos que deseja descartar em vez de mesclar dos backups.
Lembre-se de fazer um novo backup depois de destruir todos os backups antigos no processo. :)
Responder4
jdupes
tem duas opções úteis para isso: -I --isolate
e -u --print-unique
.
Por exemplo, para listar arquivos exclusivos apenas no backup
diretório:
jdupes -Iru Documents backup |grep '^backup