Ενδέχεται μερικές φορές να παρατηρήσετε ότι ορισμένα αρχεία ή φάκελοι στο σύστημά σας δεν ανοίγουν, παρόλο που εξακολουθούν να εμφανίζονται στη διαχείριση αρχείων. Ο λόγος είναι συχνά η παρουσία συμβολικών συνδέσμων που έχουν χάσει τον αρχικό τους προορισμό—αυτοί που είναι γνωστοί ως κατεστραμμένοι ή σπασμένοι σύνδεσμοι. Αυτοί οι σύνδεσμοι δεν οδηγούν πουθενά, αλλά παραμένουν κολλημένοι στο σύστημα, καταλαμβάνοντας χώρο και προκαλώντας σύγχυση κατά την αντιγραφή ή τον συγχρονισμό.

Ευτυχώς, αυτοί οι κατεστραμμένοι συμβολικοί σύνδεσμοι μπορούν να εντοπιστούν και να καθαριστούν σε λίγα απλά βήματα χρησιμοποιώντας ενσωματωμένες εντολές σε Linux, macOS, ακόμη και Windows. Η διαδικασία δεν διαρκεί πολύ, αλλά βοηθά στη διατήρηση ενός καθαρού και σταθερού συστήματος και αποτρέπει απροσδόκητα σφάλματα κατά τη λειτουργία ή τη δημιουργία αντιγράφων ασφαλείας.
Οι συμβολικοί σύνδεσμοι είναι ένας εξαιρετικός τρόπος για να οργανώσετε τα αρχεία σας, αλλά δεν είναι τέλειοι. Είναι πολύ εύθραυστοι και είναι εύκολο να καταλήξετε με συνδέσμους που οδηγούν σε ανύπαρκτα αρχεία. Το Find μπορεί να βοηθήσει σε αυτό, αλλά υπάρχουν εργαλεία τρίτων που κάνουν τη δουλειά καλύτερα.
Τι είναι ένας σπασμένος συμβολικός σύνδεσμος και γιατί είναι σημαντικός;
Ένας κατεστραμμένος συμβολικός σύνδεσμος υποδεικνύει ένα αρχείο που δεν υπάρχει. Αυτό μπορεί να συμβεί με δύο τρόπους:
Σύνδεση με ένα αρχείο που δεν υπήρξε ποτέ. Μπορείτε να το δοκιμάσετε μόνοι σας περνώντας το όνομα ενός ανύπαρκτου αρχείου στο `ln`, ως εξής: `ln -s file-does-not-exist`.
- Σύνδεση με ένα υπάρχον αρχείο και στη συνέχεια διαγραφή του, όπως: ln -s file link-to-file; rm file.
Αυτοί οι κατεστραμμένοι συμβολικοί σύνδεσμοι ονομάζονται μερικές φορές «κρεμαστοί σύνδεσμοι» και μπορούν να προκαλέσουν προβλήματα επειδή μπορεί να προκαλέσουν βλάβη σε κάτι άλλο, ανεξάρτητα από τον αρχικό τους σκοπό. Τα προγράμματα δεν χειρίζονται πάντα τους κατεστραμμένους συνδέσμους με συνέπεια:

Ειδοποίηση
Το πρόγραμμα ls δεν κάνει καν διάκριση μεταξύ σπασμένων και κανονικών συνδέσμων, γεγονός που καθιστά δύσκολη την ανίχνευσή τους κατά τη χρήση.
Πολλά εργαλεία GNU παράγουν ένα μάλλον περίπλοκο μήνυμα σφάλματος: "Πάρα πολλά επίπεδα συμβολικών συνδέσμων". Αυτό εξηγείται στην τεκμηρίωση για την βασική συνάρτηση Open Library, η οποία περιγράφει το σφάλμα ELOOP:
[ΕΛΟΠ]
Κατά τη μετάφραση του ονόματος της διαδρομής βρέθηκε ένας πολύ μεγάλος αριθμός συμβολικών συνδέσμων. Αυτό γίνεται κατανοητό ως επαναλαμβανόμενος συμβολικός σύνδεσμος.
Ευτυχώς, η εντολή file δίνει ένα πιο χρήσιμο σφάλμα:

Αυτό έχει νόημα επειδή ο κύριος σκοπός της εντολής "file" είναι να παρέχει πληροφορίες σχετικά με τον τύπο αρχείου, ενώ το wc και τα περισσότερα άλλα προγράμματα προσπαθούν να εκτελέσουν άλλες εργασίες στο περιεχόμενο αυτού του αρχείου.
Οι κατεστραμμένοι σύνδεσμοι μπορούν να προκαλέσουν χάος στο σύστημα αρχείων σας, καταλαμβάνοντας περιττό χώρο. Μπορούν επίσης να προκαλέσουν συγκεχυμένα αποτελέσματα ή ανεπιθύμητα σφάλματα όταν προγράμματα που λειτουργούν με πολλά αρχεία τους συναντούν. Είναι εύκολο να χάσετε έναν κατεστραμμένο σύνδεσμο βαθιά μέσα σε έναν φάκελο και στη συνέχεια να αντιμετωπίσετε προβλήματα στην εύρεση ή την επανειλημμένη αναζήτηση του.
Συμβουλή
Ορισμένα προγράμματα υποδεικνύουν κατεστραμμένους συνδέσμους, όπως το eza, το οποίο τους εμφανίζει με κόκκινο χρώμα:

Πώς να βρείτε συνδέσμους απόθεσης χρησιμοποιώντας την εντολή find
Η εντολή `find` είναι ένα αξιόπιστο και απαραίτητο εργαλείο για όλους τους τύπους αναζήτησης αρχείων. Είτε ψάχνετε για πρόσφατα τροποποιημένα αρχεία, αρχεία που ανήκουν σε έναν συγκεκριμένο χρήστη είτε για κενούς φακέλους, υπάρχει τρόπος να τη χρησιμοποιήσετε. Αυτό περιλαμβάνει την αναζήτηση συμβολικών συνδέσμων:
find . -type l
Η επιλογή `-type l` περιορίζει τις αναζητήσεις μόνο σε συμβολικούς συνδέσμους, κάτι που βοηθά στον περιορισμό της αναζήτησης, αλλά η επόμενη πρόκληση είναι ο εντοπισμός σπασμένων συνδέσμων. Η λύση εξαρτάται από την έκδοση του `find` που χρησιμοποιείτε.
Το σύγχρονο find του GNU είναι το πιο χρήσιμο επειδή υποστηρίζει την επιλογή -xtype:.
find . -xtype l
Η επιλογή -xtype ουσιαστικά σημαίνει "επίλυση συμβολικών συμβολοσειρών συνδέσμων πριν από τη δοκιμή αυτού του τύπου". Δεδομένου ότι ένα αρχείο μπορεί να παραμείνει σύνδεσμος μόνο εάν αυτή η επίλυση αποτύχει, τα αρχεία που προκύπτουν πρέπει να είναι κατεστραμμένοι σύνδεσμοι.
Οι παλαιότερες εκδόσεις του find, συμπεριλαμβανομένης αυτής που είναι εγκατεστημένη στο macOS Tahoe, ενδέχεται να μην υποστηρίζουν αυτό το όρισμα, επομένως θα χρειαστείτε μια εναλλακτική λύση. Ευτυχώς, υπάρχει η επιλογή -L. Λειτουργεί παρόμοια με την επιλογή -xtype, αλλά δεν ελέγχει τον τύπο αρχείου. Απλώς προσπαθεί να επιλύσει τυχόν συνδέσμους. Θα χρειαστεί να χρησιμοποιήσετε την επιλογή ελέγχου τύπου -type μαζί της.
find -L . -type l
Μια άλλη σημαντική διαφορά είναι ότι η εντολή -L ακολουθεί συμβολικούς συνδέσμους κατά την επαναληπτική αναζήτηση φακέλων. Εάν έχετε έναν παράξενο σύνδεσμο σε έναν φάκελο σε βάθος που δείχνει προς / (δηλαδή, τη ρίζα), θα πρέπει να κάνετε αναζήτηση σε ολόκληρο το σύστημα αρχείων. Πιθανώς δεν θέλετε να το κάνετε αυτό, γι' αυτό και η εντολή -L δεν είναι η προεπιλεγμένη εντολή.
Αυτό το πρόβλημα μπορεί να λυθεί χρησιμοποιώντας την εντολή find για να εντοπίσετε όλους τους συμβολικούς συνδέσμους και, στη συνέχεια, χρησιμοποιώντας την επιλογή -exec για να ελέγξετε αν υπάρχει κάθε αρχείο:
find . -type l -exec test ! -e {} \; -print
Αυτό είναι λίγο περίπλοκο, αλλά λειτουργεί. Η επιλογή "-type l" αναζητά συνδέσμους, όπως και πριν, και στη συνέχεια η εντολή "-exec" καλεί την εντολή test χρησιμοποιώντας την επιλογή "-e" για να αναζητήσει αρχεία που λείπουν. Τέλος, η εντολή "print" εμφανίζει το όνομα του αρχείου.
Αν προσπαθείτε να βρείτε κατεστραμμένους συμβολικούς συνδέσμους σε ένα σύγχρονο σύστημα Linux, η εντολή `find -xtype l` θα πρέπει να είναι επαρκής. Στην πραγματικότητα, μπορείτε να χρησιμοποιήσετε την εντολή `find` για να διαγράψετε κατεστραμμένους συμβολικούς συνδέσμους, και πάλι, χρησιμοποιώντας την επιλογή `-exec:`.
find . -xtype l -exec rm {} \;
Αλλά πρέπει πρώτα να ελέγξετε αυτούς τους συνδέσμους και, πάλι, η αντίστοιχη εντολή macOS γίνεται πιο δύσκολη. Ίσως θελήσετε να δημιουργήσετε ένα ψευδώνυμο ή μια συνάρτηση κελύφους για να αποφύγετε να το θυμάστε. Ή θα μπορούσατε να χρησιμοποιήσετε μια καλύτερη εναλλακτική λύση...
Χρησιμοποιήστε το πρόγραμμα συμβολικών συνδέσμων για να βρείτε και να διορθώσετε κατεστραμμένους συνδέσμους.
Εάν θεωρείτε τις μεθόδους που αναφέρονται παραπάνω μη πρακτικές ή εάν αντιμετωπίζετε συνεχώς προβλήματα με συμβολικούς συνδέσμους, θα πρέπει να εξετάσετε το ενδεχόμενο χρήσης Εργαλείο συμβολικής σύνδεσης. Αυτό το μικρό πρόγραμμα, γραμμένο σε C, μπορεί να εντοπίσει πολλούς τύπους προβληματικών συνδέσμων, συμπεριλαμβανομένων των σπασμένων συνδέσμων.
Λόγω της απλότητάς του, δεν υπάρχει περίπλοκη διαδικασία εγκατάστασης, επομένως θα πρέπει να το δημιουργήσετε από τον πηγαίο κώδικα. Ευτυχώς, η απλότητά του σημαίνει επίσης ότι δεν θα πρέπει να αντιμετωπίσετε κανένα πρόβλημα.
Κατεβάστε το αποθετήριο GitHub του προγράμματος Ακολούθησε την κλασική διαδικασία κατασκευής τριών βημάτων:
./configure
make
make install
Συμβουλή
Ο μεταγλωττιστής C δεν είναι διαθέσιμος από προεπιλογή για χρήστες macOS. Θα χρειαστεί να εγκαταστήσουν τα εργαλεία γραμμής εντολών της Apple για να δημιουργήσουν συμβολικούς συνδέσμους. Ξεκινήστε εκτελώντας την εντολή xcode-select-install.
Αφού εγκαταστήσετε το πρόγραμμα, μπορείτε να το εκτελέσετε δίνοντας μια διαδρομή φακέλου για αναζήτηση, για παράδειγμα:
symlinks ~/
Ενδέχεται να μην λάβετε κανένα αποτέλεσμα από αυτό. Από προεπιλογή, δεν αντιγράφεται σε υποκαταλόγους. Η επιλογή -r το κάνει και πιθανότατα θα αποκαλύψει πολλούς προβληματικούς συνδέσμους συμβόλων στο σύστημα αρχείων σας. Στην πραγματικότητα, όταν έτρεξα για πρώτη φορά την εντολή "symlinks -r ~/ | wc -l", το σύστημά μου ανέφερε τον εντυπωσιακό αριθμό των 16,617 συνδέσμων συμβόλων! Προφανώς, οι σύνδεσμοι συμβόλων μου δεν είναι καλά οργανωμένοι.
Ωστόσο, δεν είναι όλοι αυτοί οι σύνδεσμοι κατεστραμμένοι. Η εντολή `symlinks` αναφέρει τέσσερις τύπους ελλιπών συνδέσμων:
- ΑμεΑ (κρεμαστό).
- Απόλυτο: Αυτοί οι σύνδεσμοι ενδέχεται να προκαλέσουν προβλήματα στα σημεία σύνδεσης.
- Ακατάστατοι: Σύνδεσμοι που περιέχουν . ή / και οι οποίοι δεν είναι απαραίτητοι στη διαδρομή τους.
- Μακροχρόνιοι: Σύνδεσμοι που περιέχουν περιττές επεκτάσεις στη διαδρομή τους. Αναφέρονται μόνο όταν χρησιμοποιείται η επιλογή -s.
Αυτά τα προβλήματα προκύπτουν επειδή το πρόγραμμα που χρησιμοποιείτε για τη δημιουργία συνδέσμων, το `ln`, δεν ελέγχει ούτε εφαρμόζει τη διαδρομή που του περνάτε. Η καλύτερη προσφορά του είναι η επιλογή `-w`, η οποία σας προειδοποιεί εάν δημιουργήσετε έναν σύνδεσμο σε εκκρεμότητα, αλλά τον δημιουργεί ούτως ή άλλως. Η εντολή `ln` δεν προσφέρει προστασία από αυτούς τους άλλους τύπους προβληματικών συνδέσμων.
Οι συμβολικοί σύνδεσμοι μπορούν επίσης να σας βοηθήσουν να καθαρίσετε αυτούς τους συνδέσμους, μέσω δύο τύπων επιδιόρθωσης.
Καταρχάς, υπάρχει η επιλογή -d, η οποία καταργεί τους εκκρεμείς συνδέσμους. Αν θέλετε μια πιο απλή ζωή, αυτός είναι ο πιο γρήγορος τρόπος για να απαλλαγείτε από αυτά τα άχρηστα αρχεία. Ίσως θελήσετε να ελέγξετε πρώτα τη λίστα των εκκρεμών συνδέσμων, καθώς μπορούν να διορθωθούν χειροκίνητα. Για παράδειγμα, αν μετονομάσατε έναν κατάλογο και κατέστρεψατε ένα σύνολο συνδέσμων με αυτόν τον τρόπο, μπορείτε να ανακατασκευάσετε κάθε σύνδεσμο χειροκίνητα.
Η δεύτερη επιλογή είναι η -c, η οποία διορθώνει τους απόλυτους συνδέσμους, τους μη δομημένους συνδέσμους και τους μεγάλους συνδέσμους—χρησιμοποιώντας την επιλογή -s. Αυτή είναι μια αμφιλεγόμενη επιλογή κατά τη γνώμη μου. Αυτοί οι τύποι συμβολικών συνδέσμων είναι λιγότερο προβληματικοί από τους εντελώς κατεστραμμένους συνδέσμους. Θα χρησιμοποιούσα αυτήν την επιλογή μόνο εάν χρησιμοποιώ τακτικά διαφορετικά σημεία προσάρτησης συστήματος αρχείων για να αποφύγω προβλήματα απόλυτων συνδέσμων.
Οι συμβολικοί σύνδεσμοι είναι ένα χρήσιμο εργαλείο για την οργάνωση αρχείων, αλλά μερικές φορές μπορούν να γίνουν ενοχλητικοί όταν χάσουν τον αρχικό τους προορισμό. Ο τακτικός καθαρισμός αυτών των κατεστραμμένων συνδέσμων διατηρεί το σύστημά σας ελαφρύ και διαχειρίσιμο και αποτρέπει σφάλματα που θα μπορούσαν να σας επιβραδύνουν ή να επηρεάσουν τα αντίγραφα ασφαλείας σας. Μερικές απλές εντολές είναι αρκετές για να επαναφέρετε το σύστημά σας στην βέλτιστη κατάστασή του—χωρίς κατεστραμμένες διαδρομές και έτοιμο για ομαλή λειτουργία.


