GNU/Linux >> Znalost Linux >  >> Linux

Jak najít a odstranit duplicitní soubory v Linuxu

Konfigurační soubory nebo jakékoli staré soubory vždy zálohuji někde na mém pevném disku, než je upravím nebo upravím, abych je mohl obnovit ze zálohy, pokud jsem náhodou něco udělal špatně. Problém je však v tom, že jsem zapomněl tyto soubory vyčistit a můj pevný disk je po určité době zaplněn spoustou duplicitních souborů. Cítím se buď příliš líný čistit staré soubory, nebo se bojím, že mohu smazat důležité soubory. Pokud jste něco jako já a zahlcujete více kopiemi stejných souborů v různých záložních adresářích, můžete najít a odstranit duplicitní soubory pomocí nástrojů uvedených níže v operačních systémech podobných Unixu.

Upozornění:

Při mazání duplicitních souborů buďte opatrní. Pokud nebudete opatrní, povede to k náhodné ztrátě dat . Doporučuji vám věnovat zvýšenou pozornost používání těchto nástrojů.

Najděte a odstraňte duplicitní soubory v systému Linux

Pro účely této příručky budu diskutovat o třech utilitách, a to

  1. Rdfind,
  2. Fdupes,
  3. FSlint.

Tyto tři nástroje jsou bezplatné, open source a fungují na většině operačních systémů podobných Unixu.

1. Rdfind

Rdfind , znamená r nadbytečné d ata najít , je bezplatný nástroj s otevřeným zdrojovým kódem pro vyhledávání duplicitních souborů v adresářích a podadresářích a/nebo v nich. Porovnává soubory na základě jejich obsahu, nikoli podle názvů souborů. Rdfind používá hodnocení algoritmus pro klasifikaci původních a duplicitních souborů. Pokud máte dva nebo více stejných souborů, Rdfind je dostatečně chytrý na to, aby zjistil, který je původní soubor, a zbytek souborů považuje za duplikáty. Jakmile nalezne duplikáty, nahlásí vám je. Můžete se rozhodnout je buď odstranit, nebo nahradit pevnými odkazy nebosymbolické (měkké) odkazy .

Instalace Rdfind

Rdfind je k dispozici v AUR . Můžete jej tedy nainstalovat do systémů založených na Arch pomocí jakéhokoli pomocného programu AUR, jako je Yay jak je uvedeno níže.

$ yay -S rdfind

V systémech Debian, Ubuntu, Linux Mint:

$ sudo apt-get install rdfind

Na Fedoře:

$ sudo dnf install rdfind

Na RHEL, CentOS:

$ sudo yum install epel-release
$ sudo yum install rdfind

Využití

Po instalaci jednoduše spusťte příkaz Rdfind spolu s cestou k adresáři a vyhledejte duplicitní soubory.

$ rdfind ~/Downloads

Prohledejte adresář pomocí Rdfind

Jak vidíte na výše uvedeném snímku obrazovky, příkaz Rdfind prohledá adresář ~/Downloads a uloží výsledky do souboru s názvem results.txt v aktuálním pracovním adresáři. Názvy možných duplicitních souborů si můžete prohlédnout v souboru results.txt.

$ cat results.txt 
# Automatically generated
# duptype id depth size device inode priority name
DUPTYPE_FIRST_OCCURRENCE 1469 8 9 2050 15864884 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test5.regex
DUPTYPE_WITHIN_SAME_TREE -1469 8 9 2050 15864886 1 /home/sk/Downloads/tor-browser_en-US/Browser/TorBrowser/Tor/PluggableTransports/fte/tests/dfas/test6.regex
[...]
DUPTYPE_FIRST_OCCURRENCE 13 0 403635 2050 15740257 1 /home/sk/Downloads/Hyperledger(1).pdf
DUPTYPE_WITHIN_SAME_TREE -13 0 403635 2050 15741071 1 /home/sk/Downloads/Hyperledger.pdf
# end of file

Při kontrole souboru results.txt můžete snadno najít duplikáty. Pokud chcete, můžete duplikáty odstranit ručně.

Také můžete sušit možnost najít všechny duplikáty v daném adresáři, aniž byste cokoli změnili, a vytisknout shrnutí do vašeho terminálu:

$ rdfind -dryrun true ~/Downloads

Jakmile najdete duplikáty, můžete je nahradit buď pevnými nebo symbolickými odkazy.

Chcete-li nahradit všechny duplikáty pevnými odkazy, spusťte:

$ rdfind -makehardlinks true ~/Downloads

Chcete-li nahradit všechny duplikáty symbolickými odkazy/soft odkazy, spusťte:

$ rdfind -makesymlinks true ~/Downloads

Možná máte v adresáři nějaké prázdné soubory a chcete je ignorovat. Pokud ano, použijte -ignoreempty možnost jako níže.

$ rdfind -ignoreempty true ~/Downloads

Pokud již staré soubory nechcete, stačí odstranit duplicitní soubory namísto jejich nahrazení pevnými nebo měkkými odkazy.

Chcete-li odstranit všechny duplikáty, jednoduše spusťte:

$ rdfind -deleteduplicates true ~/Downloads

Pokud nechcete ignorovat prázdné soubory a odstranit je spolu se všemi duplikáty, spusťte:

$ rdfind -deleteduplicates true -ignoreempty false ~/Downloads

Další podrobnosti naleznete v části nápovědy:

$ rdfind --help

A manuálové stránky:

$ man rdfind

Doporučené čtení:

  • Odstranění duplicitních souborů ze systému Android pomocí nástroje Duplicate Files Fixer

2. Fdupes

Fdupes je další nástroj příkazového řádku pro identifikaci a odstranění duplicitních souborů v určených adresářích a podadresářích. Je to bezplatný nástroj s otevřeným zdrojovým kódem napsaný v C programovací jazyk. Fdupes identifikuje duplikáty porovnáním velikostí souborů, částečných podpisů MD5, úplných podpisů MD5 a nakonec provedením porovnání bajtu po byte pro ověření.

Podobně jako nástroj Rdfind přichází Fdupes s řadou možností pro provádění operací, jako například:

  • Rekurzivně prohledávejte duplicitní soubory v adresářích a podadresářích
  • Vyloučit prázdné a skryté soubory z úvahy
  • Zobrazit velikost duplikátů
  • Okamžitě odstraňte duplikáty, jakmile na ně narazí
  • Vyloučit soubory s různým vlastníkem/skupinou nebo bity oprávnění jako duplikáty
  • A mnohem více.

Instalace Fdupes

Fdupes je k dispozici ve výchozích úložištích většiny distribucí Linuxu.

Na Arch Linuxu a jeho variantách, jako je Antergos, Manjaro Linux, jej nainstalujte pomocí Pacmana, jak je uvedeno níže.

$ sudo pacman -S fdupes

V systémech Debian, Ubuntu, Linux Mint:

$ sudo apt-get install fdupes

Na Fedoře:

$ sudo dnf install fdupes

Na RHEL, CentOS:

$ sudo yum install epel-release
$ sudo yum install fdupes

Využití

Použití Fdupes je docela jednoduché. Stačí spustit následující příkaz a zjistit duplicitní soubory v adresáři, například ~/Downloads .

$ fdupes ~/Downloads

Ukázkový výstup z mého systému:

/home/sk/Downloads/Hyperledger.pdf
/home/sk/Downloads/Hyperledger(1).pdf

Jak můžete vidět, mám duplicitní soubor v /home/sk/Downloads/ adresář. Zobrazuje pouze duplikáty z nadřazeného adresáře. Jak zobrazit duplikáty z podadresářů? Stačí použít -r možnost jako níže.

$ fdupes -r ~/Downloads

Nyní uvidíte duplikáty z /home/sk/Downloads/ adresář a jeho podadresáře.

Fdupes může být také schopen najít duplikáty z více adresářů najednou.

$ fdupes ~/Downloads ~/Documents/ostechnix

Můžete dokonce prohledávat více adresářů, jeden rekurzivně jako níže:

$ fdupes ~/Downloads -r ~/Documents/ostechnix

Výše uvedené příkazy vyhledávají duplikáty v adresáři "~/Downloads" a adresáři "~/Documents/ostechnix" a jeho podadresářích.

Někdy možná budete chtít znát velikost duplikátů v adresáři. Pokud ano, použijte -S možnost jako níže.

$ fdupes -S ~/Downloads
403635 bytes each: 
/home/sk/Downloads/Hyperledger.pdf
/home/sk/Downloads/Hyperledger(1).pdf

Podobně pro zobrazení velikosti duplikátů v nadřazených a podřízených adresářích použijte -Sr možnost.

Prázdné a skryté soubory můžeme vyloučit z úvahy pomocí -n a -A respektive.

$ fdupes -n ~/Downloads
$ fdupes -A ~/Downloads

První příkaz vyřadí z úvahy soubory nulové délky a druhý vyloučí skryté soubory při hledání duplikátů v zadaném adresáři.

Chcete-li shrnout informace o duplicitních souborech, použijte -m možnost.

$ fdupes -m ~/Downloads
1 duplicate files (in 1 sets), occupying 403.6 kilobytes

Chcete-li odstranit všechny duplikáty, použijte -d možnost.

$ fdupes -d ~/Downloads

Ukázkový výstup:

[1] /home/sk/Downloads/Hyperledger Fabric Installation.pdf
[2] /home/sk/Downloads/Hyperledger Fabric Installation(1).pdf

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

Tento příkaz vás vyzve k zadání souborů k zachování a odstranění všech ostatních duplikátů. Stačí zadat libovolné číslo pro zachování odpovídajícího souboru a smazání zbývajících souborů. Při používání této možnosti věnujte větší pozornost. Pokud nebudete opatrní, můžete původní soubory smazat.

Pokud chcete zachovat první soubor v každé sadě duplikátů a smazat ostatní bez zobrazení výzvy pokaždé, použijte -dN možnost (nedoporučuje se).

$ fdupes -dN ~/Downloads

Chcete-li duplikáty odstranit hned, jak na ně narazí, použijte -I vlajka.

$ fdupes -I ~/Downloads

Pro více podrobností o Fdupes si prohlédněte sekci nápovědy a manuálové stránky.

$ fdupes --help
$ man fdupes

Přečtěte si také:

  • Oprava duplicitních fotografií:Dobře si uspořádejte svou knihovnu fotografií

3. FSlint

FSlint je další nástroj pro vyhledávání duplicitních souborů, který čas od času používám, abych se zbavil zbytečných duplicitních souborů a uvolnil místo na disku v mém systému Linux. Na rozdíl od ostatních dvou nástrojů má FSlint režimy GUI i CLI. Je to tedy uživatelsky přívětivější nástroj pro nováčky. FSlint nenajde jen duplikáty, ale také špatné symbolické odkazy, špatná jména, dočasné soubory, špatné IDS, prázdné adresáře a neoříznuté binární soubory atd.

Instalace FSlint

FSlint je k dispozici v AUR , takže jej můžete nainstalovat pomocí jakýchkoli pomocníků AUR.

$ yay -S fslint

V systémech Debian, Ubuntu, Linux Mint:

$ sudo apt-get install fslint

Na Fedoře:

$ sudo dnf install fslint

Na RHEL, CentOS:

$ sudo yum install epel-release
$ sudo yum install fslint

Jakmile je nainstalován, spusťte jej z nabídky nebo spouštěče aplikací.

Takto vypadá grafické uživatelské rozhraní FSlint.

Rozhraní FSlint

Jak můžete vidět, rozhraní FSlint je uživatelsky přívětivé a samovysvětlující. V Vyhledávací cestě přidejte cestu k adresáři, který chcete skenovat, a klikněte na Najít tlačítko v levém dolním rohu pro nalezení duplikátů. Chcete-li rekurzivně vyhledávat duplikáty v adresářích a podadresářích, zaškrtněte volbu rekurze. FSlint rychle prohledá daný adresář a vypíše je.

fslint GUI

Ze seznamu vyberte duplikáty, které chcete vyčistit, a vyberte kterýkoli z nich pomocí akcí, jako je Uložit, Smazat, Sloučit a Symlink.

V části Pokročilé parametry vyhledávání můžete určit cesty, které se mají vyloučit při hledání duplikátů.

fslint pokročilé vyhledávání

Možnosti příkazového řádku FSlint

FSlint poskytuje kolekci následujících nástrojů CLI k nalezení duplikátů ve vašem souborovém systému:

  • najít -- najít DUPlicitní soubory
  • findnl -- najděte Jméno Lint (problémy s názvy souborů)
  • findu8 -- najít názvy souborů s neplatným kódováním utf8
  • findbl -- najděte Bad Links (různé problémy se symbolickými odkazy)
  • najít -- najděte Stejné jméno (problémy s kolidujícími názvy)
  • nalezeno -- najděte Prázdné adresáře
  • najít -- najít soubory s ID mrtvých uživatelů
  • nálezy -- najděte spustitelné soubory Non Stripped
  • nálezy -- najděte v souborech redundantní mezery
  • findtf -- najděte dočasné soubory
  • findul -- najděte možná nepoužívané knihovny
  • zipdir -- Získejte zpět nevyužitý prostor v položkách adresáře ext2

Všechny tyto nástroje jsou dostupné pod /usr/share/fslint/fslint/fslint umístění.

Chcete-li například najít duplikáty v daném adresáři, postupujte takto:

$ /usr/share/fslint/fslint/findup ~/Downloads/

Podobně pro nalezení prázdných adresářů by příkaz byl:

$ /usr/share/fslint/fslint/finded ~/Downloads/

Chcete-li získat další podrobnosti o jednotlivých nástrojích, například findup , spustit:

$ /usr/share/fslint/fslint/findup --help

Další podrobnosti o FSlint najdete v části nápovědy a manuálových stránkách.

$ /usr/share/fslint/fslint/fslint --help
$ man fslint

Závěr

Nyní víte o třech nástrojích pro nalezení a odstranění nežádoucích duplicitních souborů v Linuxu. Mezi těmito třemi nástroji často používám Rdfind. Neznamená to, že další dva nástroje nejsou efektivní, ale s Rdfind jsem zatím spokojený. No, jsi na řadě. Jaký je váš oblíbený nástroj a proč? Dejte nám o nich vědět v sekci komentářů níže.


Linux
  1. Jak najít soubory s oprávněními SUID a SGID v Linuxu

  2. Jak najít a odstranit prázdné adresáře a soubory v Linuxu

  3. Jak chmodovat a chown skryté soubory v Linuxu?

  1. Jak najít a odstranit duplicitní fotografie v Linuxu

  2. Jak najít duplicitní soubory v Linuxu

  3. Jak mohu rekurzivně odstranit všechny prázdné soubory a adresáře v Linuxu?

  1. Jak najít soubory v Linuxu

  2. Linux Odstraňte soubory a adresáře

  3. Jak najít a odstranit prázdné adresáře a soubory v Unixu