Το 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 ~ $
ΠΡΟΣΟΧΗ ΣΤΟ ΤΙ ΔΙΑΓΡΑΦΟΥΜΕ ΔΕΝ ΜΠΟΡΟΥΜΕ ΝΑ ΤΑ ΑΝΑΚΤΗΣΟΥΜΕ τουλαχιστον οχι ευκολα
ΔΕΝ ΦΕΡΩ ΚΑΜΙΑ ΕΥΘΥΝΗ ΓΙΑ ΑΠΩΛΕΙΕΣ ΔΕΔΟΜΕΝΩΝ
- Συνδεθείτε ή εγγραφείτε για να σχολιάσετε
Σχόλια
Καλησπερα,
μια παρατηριση για το προγραμματακι....
Το 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 οποτε βοηθαει στο να τα κανεις μανταρα και να χασεις αρχεια τα οποια ενδεχομενος χρειαζεσαι ( μην ξεχνας οτι μπορει να εχεις αρχεια με διαφορετικο περιεχομενο, ιδιο μεγεθος, διαφορετικο ονομα ) θα τα βρει σαν διπλα τοτε?
Μπορείς αν θεςνα κρατήσεις παραπάνω από ένα αρχεία και να σβήσεις τα υπόλοιπα ( σε περίπτωση που έχεις backup στον ίδιο η σε κάποιο υποφάκελο).
Εγώ πάλι διπλό αρχείο λέω αυτό που έχει ΟΛΟΙΔΙΟ περιεχόμενο με ένα άλλο είτε είναι στον ιδιο φάκελο είτε σε διαφορετικό.Μιλάω πάντα για αρχεία μουσικής,φοτο,βιντεο και τέτοια ΟΧΙ για αρχεία του συστήματος.
Σε αυτό δεν μπορώ να απαντήσω με σιγουριά.Μάλλον όχι γιατί έχουν διαφορετικό περιεχόμενο
Παράδειγμα:
Εχουμε 3 αρχεία txt. To test.txt το οποίο μέσα γράφει: Γεια σου Slackware με μέγεθος 3 kb
Το test1.txt το οποίο μέσα γράφει:Geia sou Σλακγουερ με μέγεθος 3 kb
και το test2.txt που μέσα γράφει:Γεια σου Slackware με μέγεθος 3κβ
Ασχετα με το που βρίσκοται το κάθε ένα το test και το test2 είναι ιδια, διπλά θα τα έλεγα εγώ, ενώ το test1 είναι διαφορετικό.
Φιλε μου απο προσωπικη εμπειρια σου λεω οτι αν βαλεις ενα προγραμμα αν κανει αυτη την δουλεια, τοτε θα χασεις αρχεια τα οποια θες.
O μονος ασφαλεις τροπος για να μπορεσεις να βρεις τα διπλα πραγματικα αρχεια ειναι με το md5... Δες το παραδειγμα παρακατω:
Οπως βλεπεις για να το 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 τώρα την έμαθα (μου έβαλες δουλειά για το σπίτι )
Συμφωνώ απόλυτα με την τελευταια σου πρόταση, και εγώ δεν είμαι υπερ του αυτόματου ελέγχου, αλλά αν δεν ξέρεις πως γίνεται χειροκίνητα καταφεύγεις σε κάτι τέτοιο.
Συνηθως οταν καποιο αρχειο εχει το ιδιο md5 με καποιο αλλο κατα 90% (για να μην πω 99%) ειναι και ιδιου μεγεθους.
Παντα κανω χειροκινητο ελεγχο για να ξερω τι διαγραφω και τι κραταω, ωστε να μην χτυπαω μετα το κεφαλι μου στον τοιχο
Οταν λέει συγκριση byte προς byte εγώ κατάλαβα ότι δεν συγκρίνει απλα το μέγεθος των αρχείων αλλα το περιεχόμενο όπως το διαβάζει ο υπολογιστής.
Εστω ότι έχουμε
Με ιδιο md5 και ιδιο μεγεθος
Θα μας τα βγάλει σαν διαφορετικά αρχεία
Δεν επιμένω για το πρόγραμμα απλά προσπαθώ να το καταλάβω.
Ακυρο το τελευταίο γιατί δεν έχουν ιδιο md5
Μπορώ να αλλάξω το md5 χειροκίνητα; Ωστε να πειραματιστώ;
Οχι δεν μπορεις.
το test & test1 εχουν διαφορετικο md5 & μεγεθος.
Δεν μπορει να διαβαζει τα αρχεια γιατι σε binary κατα μεγαλη πιθανοτητα θα στα καταστρεψει.
Αυτο που μπορεις να κανεις με το md5 ειναι να γραψεις και αλλες γραμμες και να δεις αν θα σου βγαλει το ιδιο η οχι
Εχεις δίκιο από την αρχή κόλλησα δεν λαμβανα υπόψιν το md5 (δεν το γνώριζα)
Οταν αλλάζει το αρχείο αλλάζει και το md5
Η παρακατω εντολη, μπορει να βρει τα αρχεια που το περιεχομενο τους ειναι ακριβως το ιδιο, αλλα εχουν διαφορετικη ονομασια
http://www.commandlinefu.com/commands/view/3555/find-duplicate-files-based-on-size-first-then-md5-hash
Κάτι τέτοιο εψαχνα vagrale και βρήκα το fdupes