fdupes - orodje ukazne vrstice za iskanje in brisanje podvojenih datotek v Linuxu
Običajna zahteva je, da se za večino uporabnikov računalnikov najde in nadomesti podvojene datoteke. Iskanje in odstranjevanje podvojenih datotek je dolgočasno delo, ki zahteva čas in potrpljenje. Iskanje podvojenih datotek je lahko zelo enostavno, če vaš računalnik poganja GNU/Linux, zahvaljujoč pripomočku 'fdupes'.
Fdupes je pripomoček za Linux, ki ga je v programskem jeziku C napisal Adrian Lopez, izdan pod licenco MIT. Aplikacija lahko najde podvojene datoteke v danem naboru imenikov in podimenikov. Fdupes prepozna dvojnike s primerjavo podpisa datotek MD5, čemur sledi primerjava med bajti. S Fdupes lahko prenesete veliko možnosti za seznam, brisanje in zamenjavo datotek s trdimi povezavami do dvojnikov.
Primerjava se začne v vrstnem redu:
primerjava velikosti> Delna primerjava podpisov MD5> Primerjava celotnih podpisov MD5> Primerjava bajtov z bajti.
Namestite fdupes v Linux
Namestitev najnovejše različice fdupes (fdupes različica 1.51) je tako enostavna kot zagon naslednjega ukaza v sistemih, ki temeljijo na Debianu, kot sta Ubuntu in Linux Mint.
$ sudo apt-get install fdupes
V sistemih, ki temeljijo na CentOS/RHEL in Fedora, morate za namestitev paketa fdupes vklopiti repel za epel.
# yum install fdupes # dnf install fdupes [On Fedora 22 onwards]
Opomba: Privzeti upravitelj paketov yum se od Fedore 22 naprej nadomesti z dnf…
Kako uporabiti ukaz fdupes?
1. Za predstavitvene namene ustvarimo nekaj podvojenih datotek v imeniku (recimo tecmint) preprosto kot:
$ mkdir /home/"$USER"/Desktop/tecmint && cd /home/"$USER"/Desktop/tecmint && for i in {1..15}; do echo "I Love Tecmint. Tecmint is a very nice community of Linux Users." > tecmint${i}.txt ; done
Po zagonu zgornjega ukaza preverimo, ali so podvojene datoteke ustvarjene ali ne uporabljajo ukaza ls.
$ ls -l total 60 -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint10.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint11.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint12.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint13.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint14.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint15.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint1.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint2.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint3.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint4.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint5.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint6.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint7.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint8.txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9.txt
Zgornji skript ustvari 15 datotek in sicer tecmint1.txt, tecmint2.txt… tecmint15.txt in vse datoteke vsebujejo enake podatke, tj.
"I Love Tecmint. Tecmint is a very nice community of Linux Users."
2. Zdaj poiščite podvojene datoteke v mapi tecmint.
$ fdupes /home/$USER/Desktop/tecmint /home/tecmint/Desktop/tecmint/tecmint13.txt /home/tecmint/Desktop/tecmint/tecmint8.txt /home/tecmint/Desktop/tecmint/tecmint11.txt /home/tecmint/Desktop/tecmint/tecmint3.txt /home/tecmint/Desktop/tecmint/tecmint4.txt /home/tecmint/Desktop/tecmint/tecmint6.txt /home/tecmint/Desktop/tecmint/tecmint7.txt /home/tecmint/Desktop/tecmint/tecmint9.txt /home/tecmint/Desktop/tecmint/tecmint10.txt /home/tecmint/Desktop/tecmint/tecmint2.txt /home/tecmint/Desktop/tecmint/tecmint5.txt /home/tecmint/Desktop/tecmint/tecmint14.txt /home/tecmint/Desktop/tecmint/tecmint1.txt /home/tecmint/Desktop/tecmint/tecmint15.txt /home/tecmint/Desktop/tecmint/tecmint12.txt
3. Rekurzivno poiščite dvojnike v vseh imenikih, vključno z njihovimi podimeniki, z uporabo možnosti -r.
Rekurzivno išče po vseh datotekah in mapah, odvisno od števila datotek in map bo trajalo nekaj časa za skeniranje dvojnikov. V tem času se vam bo prikazal celoten napredek v terminalu, približno tako.
$ fdupes -r /home Progress [37780/54747] 69%
4. Oglejte si velikost dvojnikov, najdenih v mapi, z možnostjo -S.
$ fdupes -S /home/$USER/Desktop/tecmint 65 bytes each: /home/tecmint/Desktop/tecmint/tecmint13.txt /home/tecmint/Desktop/tecmint/tecmint8.txt /home/tecmint/Desktop/tecmint/tecmint11.txt /home/tecmint/Desktop/tecmint/tecmint3.txt /home/tecmint/Desktop/tecmint/tecmint4.txt /home/tecmint/Desktop/tecmint/tecmint6.txt /home/tecmint/Desktop/tecmint/tecmint7.txt /home/tecmint/Desktop/tecmint/tecmint9.txt /home/tecmint/Desktop/tecmint/tecmint10.txt /home/tecmint/Desktop/tecmint/tecmint2.txt /home/tecmint/Desktop/tecmint/tecmint5.txt /home/tecmint/Desktop/tecmint/tecmint14.txt /home/tecmint/Desktop/tecmint/tecmint1.txt /home/tecmint/Desktop/tecmint/tecmint15.txt /home/tecmint/Desktop/tecmint/tecmint12.txt
5. Ogledate si lahko velikost podvojenih datotek za vsak imenik in podimenike, ki jih najdete znotraj hkrati z uporabo možnosti -S in -r, kot:
$ fdupes -Sr /home/avi/Desktop/ 65 bytes each: /home/tecmint/Desktop/tecmint/tecmint13.txt /home/tecmint/Desktop/tecmint/tecmint8.txt /home/tecmint/Desktop/tecmint/tecmint11.txt /home/tecmint/Desktop/tecmint/tecmint3.txt /home/tecmint/Desktop/tecmint/tecmint4.txt /home/tecmint/Desktop/tecmint/tecmint6.txt /home/tecmint/Desktop/tecmint/tecmint7.txt /home/tecmint/Desktop/tecmint/tecmint9.txt /home/tecmint/Desktop/tecmint/tecmint10.txt /home/tecmint/Desktop/tecmint/tecmint2.txt /home/tecmint/Desktop/tecmint/tecmint5.txt /home/tecmint/Desktop/tecmint/tecmint14.txt /home/tecmint/Desktop/tecmint/tecmint1.txt /home/tecmint/Desktop/tecmint/tecmint15.txt /home/tecmint/Desktop/tecmint/tecmint12.txt 107 bytes each: /home/tecmint/Desktop/resume_files/r-csc.html /home/tecmint/Desktop/resume_files/fc.html
6. Razen iskanja v eni ali vseh mapah rekurzivno lahko po potrebi izberete dve ali tri mape. Da ne omenjam, da lahko uporabite možnost -S in/ali -r, če je potrebno.
$ fdupes /home/avi/Desktop/ /home/avi/Templates/
7. Za brisanje podvojenih datotek in ohranjanje kopije lahko uporabite možnost -d. Pri uporabi te možnosti je treba biti še posebej previden, sicer boste morda izgubili potrebne datoteke/podatke in upoštevajte, da postopek ni mogoče obnoviti.
$ fdupes -d /home/$USER/Desktop/tecmint [1] /home/tecmint/Desktop/tecmint/tecmint13.txt [2] /home/tecmint/Desktop/tecmint/tecmint8.txt [3] /home/tecmint/Desktop/tecmint/tecmint11.txt [4] /home/tecmint/Desktop/tecmint/tecmint3.txt [5] /home/tecmint/Desktop/tecmint/tecmint4.txt [6] /home/tecmint/Desktop/tecmint/tecmint6.txt [7] /home/tecmint/Desktop/tecmint/tecmint7.txt [8] /home/tecmint/Desktop/tecmint/tecmint9.txt [9] /home/tecmint/Desktop/tecmint/tecmint10.txt [10] /home/tecmint/Desktop/tecmint/tecmint2.txt [11] /home/tecmint/Desktop/tecmint/tecmint5.txt [12] /home/tecmint/Desktop/tecmint/tecmint14.txt [13] /home/tecmint/Desktop/tecmint/tecmint1.txt [14] /home/tecmint/Desktop/tecmint/tecmint15.txt [15] /home/tecmint/Desktop/tecmint/tecmint12.txt Set 1 of 1, preserve files [1 - 15, all]:
Morda boste opazili, da so na seznamu vsi dvojniki in boste pozvani, da izbrišete enega za drugim ali določen obseg ali vse naenkrat. Za brisanje datotek določenega obsega lahko izberete obseg, kot je spodaj.
Set 1 of 1, preserve files [1 - 15, all]: 2-15 [-] /home/tecmint/Desktop/tecmint/tecmint13.txt [+] /home/tecmint/Desktop/tecmint/tecmint8.txt [-] /home/tecmint/Desktop/tecmint/tecmint11.txt [-] /home/tecmint/Desktop/tecmint/tecmint3.txt [-] /home/tecmint/Desktop/tecmint/tecmint4.txt [-] /home/tecmint/Desktop/tecmint/tecmint6.txt [-] /home/tecmint/Desktop/tecmint/tecmint7.txt [-] /home/tecmint/Desktop/tecmint/tecmint9.txt [-] /home/tecmint/Desktop/tecmint/tecmint10.txt [-] /home/tecmint/Desktop/tecmint/tecmint2.txt [-] /home/tecmint/Desktop/tecmint/tecmint5.txt [-] /home/tecmint/Desktop/tecmint/tecmint14.txt [-] /home/tecmint/Desktop/tecmint/tecmint1.txt [-] /home/tecmint/Desktop/tecmint/tecmint15.txt [-] /home/tecmint/Desktop/tecmint/tecmint12.txt
8. Z varnostnega vidika boste morda želeli natisniti izhodne podatke iz datoteke »fdupes« in nato preveriti besedilno datoteko, da se odločite, katero datoteko želite izbrisati. To zmanjšuje možnosti za nenamerno izbris datoteke. Lahko naredite:
$ fdupes -Sr /home > /home/fdupes.txt
Opomba: ‘/ home’ lahko zamenjate z želeno mapo. Uporabite tudi možnosti '-r' in '-S', če želite rekurzivno iskati oziroma Velikost tiskanja.
9. Prvo datoteko lahko izpustite iz vsakega niza zadetkov z uporabo možnosti -f.
Datoteke prvega seznama v imeniku.
$ ls -l /home/$USER/Desktop/tecmint total 20 -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (3rd copy).txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (4th copy).txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (another copy).txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9 (copy).txt -rw-r--r-- 1 tecmint tecmint 65 Aug 8 11:22 tecmint9.txt
in nato izpustite prvo datoteko iz vsakega niza zadetkov.
$ fdupes -f /home/$USER/Desktop/tecmint /home/tecmint/Desktop/tecmint9 (copy).txt /home/tecmint/Desktop/tecmint9 (3rd copy).txt /home/tecmint/Desktop/tecmint9 (another copy).txt /home/tecmint/Desktop/tecmint9 (4th copy).txt
10. Preverite nameščeno različico fdupes.
$ fdupes --version fdupes 1.51
11. Če potrebujete kakršno koli pomoč za fdupes, lahko uporabite stikalo '-h'.
$ fdupes -h Usage: fdupes [options] DIRECTORY... -r --recurse for every directory given follow subdirectories encountered within -R --recurse: for each directory given after this option follow subdirectories encountered within (note the ':' at the end of the option, manpage for more details) -s --symlinks follow symlinks -H --hardlinks normally, when two or more files point to the same disk area they are treated as non-duplicates; this option will change this behavior -n --noempty exclude zero-length files from consideration -A --nohidden exclude hidden files from consideration -f --omitfirst omit the first file in each set of matches -1 --sameline list each set of matches on a single line -S --size show size of duplicate files -m --summarize summarize dupe information -q --quiet hide progress indicator -d --delete prompt user for files to preserve and delete all others; important: under particular circumstances, data may be lost when using this option together with -s or --symlinks, or when specifying a particular directory more than once; refer to the fdupes documentation for additional information -N --noprompt together with --delete, preserve the first file in each set of duplicates and delete the rest without prompting the user -v --version display fdupes version -h --help display this help message
To je zdaj za vse. Sporočite mi, kako ste v Linuxu doslej iskali in brisali podvojene datoteke? in mi povejte tudi svoje mnenje o tej pripomočki. Vnesite svoje dragocene povratne informacije v spodnji odsek za komentarje in ne pozabite nas všečkati/deliti ter nam pomagati, da se razširimo.
Delam z drugim pripomočkom, imenovanim fslint, da odstranim podvojene datoteke, kmalu bo objavljen in ljudje boste radi brali.