Βρείτε γρήγορα και εύκολα τα διπλά αρχεία σας με την fdupes.

neos | Τρί, 05/20/2014 - 15:19 | 5' | 14

Το fdupes είναι ένα πρόγραμμα το οποίο τρέχει από το τερματικό μας.

Η σύνταξή της είναι πολύ εύκολη απλά δίνουμε
fdupes και την παράμετρο αναλόγως τι θέλουμε να κάνουμε

Τα κυριότερα είναι:

-r για κάθε φάκελο που δίνουμε προχώρα και στους υποφακέλους.
-s ακολούθα τα symlinks
-H ακολούθα τα hardlinks
-d διέγραψε ένα από τα αρχεία ή όλα αφού ρωτήσει τον χρήστη
-N μαζί με το -d κρατάει το πρώτο αρχείο και σβήνει τα υπόλοιπα χωρίς να ρωτήσει τον χρήστη.

Α θα πρέπει να είμαστε ένα φάκελο πίσω από αυτόν που θέλουμε να ψαξουμε.

Για περισσότερα:

man fdupes

Ας δούμε και 1-2 παραδείγματα.

Αυτός είναι ο φάκελος που θα πειραματιστούμε

 

n30s@Laptopi ~ $ ls fdup/
02 - Track 2.mp3  Happy Stars .jpg  sdlkjg.jpg  test  test1  track.mp3  untitled folder
n30s@Laptopi ~ $ ls fdup/untitled\ folder/
02 - Track 2.mp3  Happy Stars .jpg  test
n30s@Laptopi ~ $

 

Ας δούμε αν έχουμε διπλά αρχεία

n30s@Laptopi ~ $ fdupes fdup/
fdup/test                               
fdup/test1

fdup/track.mp3
fdup/02 - Track 2.mp3

fdup/sdlkjg.jpg
fdup/Happy Stars .jpg

 

Για να ρίξουμε μια ματιά και στους υποφακέλους

n30s@Laptopi ~ $ fdupes -r fdup/
fdup/untitled folder/test               
fdup/test
fdup/test1

fdup/track.mp3
fdup/untitled folder/02 - Track 2.mp3
fdup/02 - Track 2.mp3

fdup/sdlkjg.jpg
fdup/untitled folder/Happy Stars .jpg
fdup/Happy Stars .jpg

n30s@Laptopi ~ $

Μήπως να αρχίζαμε να διαγράφουμε μερικά;

n30s@Laptopi ~ $ fdupes -r -d fdup/
[1] fdup/untitled folder/test           
[2] fdup/test
[3] fdup/test1

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

Εδώ μας ρωτάει πιο αρχείο θέλουμε να κρατήσουμε, διαλέγουμε όποιο θέλουμε 1,2,3, ή όλα και συνεχίζουμε.

 

n30s@Laptopi ~ $ fdupes -r -d fdup/
[1] fdup/untitled folder/test           
[2] fdup/test
[3] fdup/test1

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

   [-] fdup/untitled folder/test
   [+] fdup/test
   [-] fdup/test1

[1] fdup/track.mp3
[2] fdup/untitled folder/02 - Track 2.mp3
[3] fdup/02 - Track 2.mp3

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

   [-] fdup/track.mp3
   [-] fdup/untitled folder/02 - Track 2.mp3
   [+] fdup/02 - Track 2.mp3

[1] fdup/sdlkjg.jpg
[2] fdup/untitled folder/Happy Stars .jpg
[3] fdup/Happy Stars .jpg

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

   [-] fdup/sdlkjg.jpg
   [-] fdup/untitled folder/Happy Stars .jpg
   [+] fdup/Happy Stars .jpg

 

Το αποτέλεσμα πριν:

n30s@Laptopi ~ $ ls fdup/
02 - Track 2.mp3  Happy Stars .jpg  sdlkjg.jpg  test  test1  track.mp3  untitled folder

 και μετά:

n30s@Laptopi ~ $ ls fdup/
02 - Track 2.mp3  Happy Stars .jpg  test  untitled folder
n30s@Laptopi ~ $ ls fdup/untitled\ folder/
n30s@Laptopi ~ $

 

 

 

ΠΡΟΣΟΧΗ ΣΤΟ ΤΙ ΔΙΑΓΡΑΦΟΥΜΕ ΔΕΝ ΜΠΟΡΟΥΜΕ ΝΑ ΤΑ ΑΝΑΚΤΗΣΟΥΜΕ τουλαχιστον οχι ευκολα

ΔΕΝ ΦΕΡΩ ΚΑΜΙΑ ΕΥΘΥΝΗ ΓΙΑ ΑΠΩΛΕΙΕΣ ΔΕΔΟΜΕΝΩΝ

Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Καλησπερα,

μια παρατηριση για το προγραμματακι....

Το test με το test1 μονο διπλα αρχεια δεν μπορουν να χαρακτηριστουν, οποτε αν κανεις καθαρισμο ενδεχομενος να χασεις και αρχεια που θες.

Ναι δεν ανέφερα ότι το περιεχόμενο από τα test και test1 είναι ολόιδιο.

όπως και τα τραγούδια είναι το ίδιο τραγούδι απλά το μετανόμασα.

Το προγραμματάκι το βρήκα όταν έψαχνα κάτι για να σβήσω τα διπλά mp3 που είχα με διαφορετικά ονόματα.

Γενικά η fdupes κάνει ότι έκανε στις εικόνες του παραδείγματος με όλα τα αρχεία txt, mp3, ogg κτλ

Με λίγα λόγια η fdupes συγκρίνει byte προς byte τα αρχεία και έτσι βρίσκει τα διπλά.

From Wikipedia, the free encyclopedia

fdupes is a program written by Adrian Lopez to scan directories for duplicate files, with options to list, delete or replace the files with hardlinks pointing to the duplicate. It first compares file sizes and MD5 signatures, and then performs a byte-by-byte check for verification.

fdupes is written in C and is released under the MIT License.

http://en.wikipedia.org/wiki/Fdupes

ναι αλλα με αυτο τον τροπο θα διαγραψει και τα backup τα οποια θα εχω παρει σε αρχεια στον ιδιο ή διαφορατικο φακελο με αποτελεσμα να μεινω ξεκρεμαστος οταν τα χρειαστω.

 

Για μενα η εννοια διπλο αρχειο σημαινει αρχειο με το ιδιο ονομα σε διαφορετικη τοποθεσια.

 

Μαλλον ο δημιουργος δεν ξερει την εννοια του backup οποτε βοηθαει στο να τα κανεις μανταρα και να χασεις αρχεια τα οποια ενδεχομενος χρειαζεσαι ( μην ξεχνας οτι μπορει να εχεις αρχεια με διαφορετικο περιεχομενο, ιδιο μεγεθος, διαφορετικο ονομα ) θα τα βρει σαν διπλα τοτε?

slackware]

ναι αλλα με αυτο τον τροπο θα διαγραψει και τα backup τα οποια θα εχω παρει σε αρχεια στον ιδιο ή διαφορατικο φακελο με αποτελεσμα να μεινω ξεκρεμαστος οταν τα χρειαστω.

 

Μπορείς αν θεςνα κρατήσεις παραπάνω από ένα αρχεία και να σβήσεις τα υπόλοιπα ( σε περίπτωση που έχεις backup στον ίδιο η σε κάποιο υποφάκελο).

 

slackware]

Για μενα η εννοια διπλο αρχειο σημαινει αρχειο με το ιδιο ονομα σε διαφορετικη τοποθεσια.

Εγώ πάλι διπλό αρχείο λέω αυτό που έχει ΟΛΟΙΔΙΟ περιεχόμενο με ένα άλλο είτε είναι στον ιδιο φάκελο είτε σε διαφορετικό.Μιλάω πάντα για αρχεία μουσικής,φοτο,βιντεο και τέτοια ΟΧΙ για αρχεία του συστήματος.

slackware]

Μαλλον ο δημιουργος δεν ξερει την εννοια του backup οποτε βοηθαει στο να τα κανεις μανταρα και να χασεις αρχεια τα οποια ενδεχομενος χρειαζεσαι ( μην ξεχνας οτι μπορει να εχεις αρχεια με διαφορετικο περιεχομενο, ιδιο μεγεθος, διαφορετικο ονομα ) θα τα βρει σαν διπλα τοτε?

Σε αυτό δεν μπορώ να απαντήσω με σιγουριά.Μάλλον όχι γιατί έχουν διαφορετικό περιεχόμενο

Παράδειγμα:

Εχουμε 3 αρχεία txt. To test.txt το οποίο μέσα γράφει: Γεια σου Slackware  με μέγεθος 3 kb

 

Το test1.txt το οποίο μέσα γράφει:Geia sou Σλακγουερ   με μέγεθος 3 kb

 

και το test2.txt που μέσα γράφει:Γεια σου Slackware   με μέγεθος 3κβ

 

Ασχετα με το που βρίσκοται το κάθε ένα το test και το test2 είναι ιδια, διπλά θα τα έλεγα εγώ, ενώ το test1 είναι διαφορετικό.

 

Φιλε μου απο προσωπικη εμπειρια σου λεω οτι αν βαλεις ενα προγραμμα αν κανει αυτη την δουλεια, τοτε θα χασεις αρχεια τα οποια θες.

O μονος ασφαλεις τροπος για να μπορεσεις να βρεις τα διπλα πραγματικα αρχεια ειναι με το md5... Δες το παραδειγμα παρακατω:

komodino[tmp]$ cat > test1
Γεια σου Slackware
komodino[tmp]$ cat > test2
Geia sou Σλακγουερ
komodino[tmp]$ cat > test3
Γεια σου Slackware
komodino[tmp]$ ls -l test*
-rw-r--r-- 1 komodino users 26 Μάι 21 00:30 test1
-rw-r--r-- 1 komodino users 28 Μάι 21 00:31 test2
-rw-r--r-- 1 komodino users 26 Μάι 21 00:31 test3
komodino[tmp]$ md5sum test1
e18c337d7c9e31be7cc73c07988c4562 test1
komodino[tmp]$ md5sum test2
531f7751fe26eded5ab1afa3b46006b3 test2
komodino[tmp]$ md5sum test3
e18c337d7c9e31be7cc73c07988c4562 test3
komodino[tmp]$

Οπως βλεπεις για να το test1 & test3 ειναι ιδια λογο md5sum οποτε σε αυτη την περιπτωση θα μπορουσες να διαγραψεις το 1 απο τα 2.

 

Και παλι με το md5sum ειναι λιγο επιφοβο

ετρεξα στον φακελο μου

find /home/komodino -name "test*" -type f -exec md5sum {} \;

Να βρει το md5sum σε οσα αρχεια το ονομα ξεκιναει απο test, και βρηκα το παρακατω

...output ommited...

dad0227408777290e6c56afc03cf6e12  ./Downloads/Slacware_packages/libnl/libnl-3.2.24/tests/.deps/test-cache-mngr.Po
dad0227408777290e6c56afc03cf6e12  ./Downloads/Slacware_packages/libnl/libnl-3.2.24/tests/.deps/test-complex-HTB-with-hash-filters.Po
dad0227408777290e6c56afc03cf6e12  ./Downloads/Slacware_packages/libnl/libnl-3.2.24/tests/.deps/test-create-bond.Po

...output ommited...

e18c337d7c9e31be7cc73c07988c4562  ./tmp/test1
e18c337d7c9e31be7cc73c07988c4562  ./tmp/test3

βλεπουμε 3 τελειος διαφορετικα αρχεια, τα οποια κανουν διαφορετικα πραματα, να εχουν το ιδιο md5 οποτε να το τρεξω ενδεχομενος να μου δημιουργησει προβλημα.

 

Τετοια προγραμματα δεν τα εμπιστευομαι, ο καλυτερος ελεγχος ειναι ο χειροκινητος.

Στο πρώτο παράδειγμά σου αν κατάλαβα καλά συμφωνούμε μπορούμε να τα διαγράψουμε χωρις φόβο.

Στο δεύτερο έχασα την μπάλα δεν κατάλαβα την έξοδο της εντολής.

Αν κατάλαβα καλά έχεις 3 αρχεία στον φάκελο downloads που είναι διαφορετικά αλλλά έχουν το ίδιο md5

και 2 στον ./tmp με ιδιο md5 αλλά είναι ίδια σωστά;

Αν συγκρίνεις τα αρχεία στον φάκελο downloads όχι με md5 αλλά byte προς byte (αφού ο δημιουργός του λέει ότι κάνει ΚΑΙ αυτή την σύγκριση τι θα σου βγάλει;)

Δεν ξέρω πως γίνεται η συγκριση αυτή.Και την σύγκριση με md5 τώρα την έμαθα (μου έβαλες δουλειά για το σπίτι  cheeky)

Συμφωνώ απόλυτα με την τελευταια σου πρόταση, και εγώ δεν είμαι υπερ του αυτόματου ελέγχου, αλλά αν δεν ξέρεις πως γίνεται χειροκίνητα καταφεύγεις σε κάτι τέτοιο.

Συνηθως οταν καποιο αρχειο εχει το ιδιο md5 με καποιο αλλο κατα 90% (για να μην πω 99%) ειναι και ιδιου μεγεθους.

 

Παντα κανω χειροκινητο ελεγχο για να ξερω τι διαγραφω και τι κραταω, ωστε να μην χτυπαω μετα το κεφαλι μου στον τοιχο

Οταν λέει συγκριση byte προς byte εγώ κατάλαβα ότι δεν συγκρίνει απλα το μέγεθος των αρχείων αλλα το περιεχόμενο όπως το διαβάζει ο υπολογιστής.

Εστω ότι έχουμε

n30s@Laptopi ~/test $ cat test
Gia sou Slackware
n30s@Laptopi ~/test $ cat test1
Slackware Gia sou
n30s@Laptopi ~/test $ 

Με ιδιο md5 και ιδιο μεγεθος

Θα μας τα βγάλει σαν διαφορετικά αρχεία

n30s@Laptopi ~ $ fdupes -d test/
n30s@Laptopi ~ $ ls test/               
test  test1
n30s@Laptopi ~ $ 

Δεν επιμένω για το πρόγραμμα απλά προσπαθώ να το καταλάβω.

 

Ακυρο το τελευταίο γιατί δεν έχουν ιδιο md5

n30s@Laptopi ~/test $ md5sum test
d53d38c58b0de5fc9131a6daefedc49d  test
n30s@Laptopi ~/test $ md5sum test1
3814f9f286a0a87bc85f07ef516f910c  test1
n30s@Laptopi ~/test $ 

 

Μπορώ να αλλάξω το md5 χειροκίνητα; Ωστε να πειραματιστώ;

 

Οχι δεν μπορεις.

το test & test1 εχουν διαφορετικο md5 & μεγεθος.

Δεν μπορει να διαβαζει τα αρχεια γιατι σε binary κατα μεγαλη πιθανοτητα θα στα καταστρεψει.

Αυτο που μπορεις να κανεις με το md5 ειναι να γραψεις και αλλες γραμμες και να δεις αν θα σου βγαλει το ιδιο η οχι

Εχεις δίκιο από την αρχή κόλλησα δεν λαμβανα υπόψιν το md5 (δεν το γνώριζα)

Οταν αλλάζει το αρχείο αλλάζει και το md5

 

n30s@Laptopi ~/test $ cat test
Gia sou Slackware
n30s@Laptopi ~/test $ md5sum test
d53d38c58b0de5fc9131a6daefedc49d  test
n30s@Laptopi ~/test $ echo >> test Kati mathame kai simera
n30s@Laptopi ~/test $ cat test
Gia sou Slackware
Kati mathame kai simera
n30s@Laptopi ~/test $ md5sum test
44d26d907d0455cba025d693b97873c8  test
n30s@Laptopi ~/test $ 

yes

Η παρακατω εντολη, μπορει να βρει τα αρχεια που το περιεχομενο τους ειναι ακριβως το ιδιο, αλλα εχουν διαφορετικη ονομασια

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

http://www.commandlinefu.com/commands/view/3555/find-duplicate-files-based-on-size-first-then-md5-hash