Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux
Βασικά Takeaways
- Το πραγματικό μέγεθος ενός αρχείου, που είναι ο αριθμός των byte που συνθέτουν το αρχείο, και το πραγματικό μέγεθος στον σκληρό δίσκο, που είναι ο αριθμός των μπλοκ συστήματος αρχείων που απαιτούνται για την αποθήκευσή του, διαφέρουν λόγω της κατανομής του χώρου στο δίσκο σε μπλοκ.
- Η εντολή du μπορεί να χρησιμοποιηθεί για τον έλεγχο του μεγέθους των αρχείων, των καταλόγων και του συνολικού χώρου στο δίσκο που χρησιμοποιείται από τον τρέχοντα κατάλογο και τους υποκαταλόγους.
- Εκτελέστε το “du -h” για να δείτε μια λίστα αρχείων και φακέλων σε μορφή αναγνώσιμη από τον άνθρωπο.
Όταν χρησιμοποιείτε το
Linux
du
εντολή, λαμβάνετε τόσο την πραγματική χρήση του δίσκου όσο και το πραγματικό μέγεθος ενός αρχείου ή καταλόγου. Θα εξηγήσουμε γιατί αυτές οι
τιμές
δεν είναι ίδιες.
Γιατί η πραγματική χρήση του δίσκου και το πραγματικό μέγεθος είναι διαφορετικά;
Το μέγεθος ενός αρχείου και ο χώρος που καταλαμβάνει στον σκληρό σας δίσκο είναι σπάνια το ίδιο. Ο χώρος στο δίσκο κατανέμεται σε μπλοκ. Εάν ένα αρχείο είναι μικρότερο από ένα μπλοκ, ένα ολόκληρο μπλοκ εξακολουθεί να εκχωρείται σε αυτό επειδή το σύστημα αρχείων δεν έχει μικρότερη μονάδα ακίνητης περιουσίας για χρήση.
Εκτός εάν το μέγεθος ενός αρχείου είναι ένα ακριβές πολλαπλάσιο μπλοκ, ο χώρος που χρησιμοποιεί στον σκληρό δίσκο πρέπει πάντα να στρογγυλοποιείται στο επόμενο ολόκληρο μπλοκ. Για παράδειγμα, εάν ένα αρχείο είναι μεγαλύτερο από δύο μπλοκ αλλά μικρότερο από τρία, χρειάζονται ακόμα τρία μπλοκ χώρου για την αποθήκευσή του.
Χρησιμοποιούνται δύο μετρήσεις σε σχέση με το μέγεθος του αρχείου. Το πρώτο είναι το πραγματικό μέγεθος του αρχείου, το οποίο είναι ο αριθμός των byte περιεχομένου που απαρτίζουν το αρχείο. Το δεύτερο είναι το πραγματικό μέγεθος του αρχείου στον σκληρό δίσκο. Αυτός είναι ο αριθμός των μπλοκ συστήματος αρχείων που απαιτούνται για την αποθήκευση αυτού του αρχείου.
Πώς να ελέγξετε το μέγεθος ενός αρχείου
Ας δούμε ένα απλό παράδειγμα. Θα ανακατευθύνουμε έναν χαρακτήρα σε ένα αρχείο για να δημιουργήσουμε ένα μικρό αρχείο:
echo "1" > geek.txt
Τώρα, θα χρησιμοποιήσουμε τη λίστα μεγάλης μορφής,
ls
για να δείτε το μήκος του αρχείου:
ls -l geek.txt
Το μήκος είναι η αριθμητική τιμή που ακολουθεί το
dave dave
καταχωρήσεις, που είναι δύο byte. Γιατί είναι δύο byte όταν στείλαμε μόνο έναν χαρακτήρα στο αρχείο; Ας ρίξουμε μια ματιά στο τι συμβαίνει μέσα στο αρχείο.
Θα χρησιμοποιήσουμε το
hexdump
εντολή, η οποία θα μας δώσει έναν ακριβή αριθμό byte και θα μας επιτρέψει να “δούμε”
χαρακτήρες που δεν εκτυπώνονται ως δεκαεξαδικές τιμές
. Θα χρησιμοποιήσουμε επίσης το
-C
(κανονική) επιλογή για να αναγκάσετε την έξοδο να εμφανίζει δεκαεξαδικές τιμές στο
σώμα
της εξόδου, καθώς και τα ισοδύναμα αλφαριθμητικών χαρακτήρων τους:
hexdump -C geek.txt
Η έξοδος μας δείχνει ότι, ξεκινώντας από τη μετατόπιση 00000000 στο αρχείο, υπάρχει ένα byte που περιέχει μια δεκαεξαδική τιμή 31 και ένα που περιέχει μια δεκαεξαδική τιμή 0A. Το δεξιό τμήμα της εξόδου απεικονίζει αυτές τις τιμές ως αλφαριθμητικούς χαρακτήρες, όπου είναι δυνατόν.
Η δεκαεξαδική τιμή του 31 χρησιμοποιείται για την αναπαράσταση του ψηφίου. Η δεκαεξαδική τιμή του 0Α χρησιμοποιείται για να αναπαραστήσει τον χαρακτήρα Τροφοδοσίας γραμμής, ο οποίος δεν μπορεί να εμφανιστεί ως αλφαριθμητικός χαρακτήρας, επομένως εμφανίζεται ως τελεία (.). Ο χαρακτήρας Τροφοδοσία γραμμής προστίθεται από
echo
. Από προεπιλογή,
echo
ξεκινά μια νέα γραμμή αφού εμφανίσει το κείμενο που πρέπει να γράψει στο παράθυρο του τερματικού.
Αυτό αντιστοιχεί στην έξοδο από
ls
και συμφωνεί με το μήκος του αρχείου των δύο byte.
Τώρα, θα χρησιμοποιήσουμε το
du
εντολή για να δείτε το μέγεθος του αρχείου:
du geek.txt
Λέει ότι το μέγεθος είναι τέσσερα, αλλά τέσσερα από τι;
Υπάρχουν μπλοκ, και μετά υπάρχουν μπλοκ
Οταν
du
αναφέρει τα μεγέθη αρχείων σε μπλοκ, το μέγεθος που χρησιμοποιεί εξαρτάται από διάφορους παράγοντες. Μπορείτε να καθορίσετε ποιο μέγεθος μπλοκ θα πρέπει να χρησιμοποιεί στη γραμμή εντολών. Αν δεν αναγκάσεις
du
Για να χρησιμοποιήσετε ένα συγκεκριμένο μέγεθος μπλοκ, ακολουθεί ένα σύνολο κανόνων για να αποφασίσετε ποιον θα χρησιμοποιήσετε.
Αρχικά, ελέγχει τα ακόλουθα
μεταβλητές περιβάλλοντος:
- DU_BLOCK_SIZE
- BLOCK_SIZE
- BLOCKSIZE
Εάν υπάρχει κάποιο από αυτά, ορίζεται το μέγεθος του μπλοκ και
du
σταματά τον έλεγχο. Εάν δεν έχει οριστεί κανένα,
du
προεπιλογή σε μέγεθος μπλοκ 1.024 byte. Εκτός αν, δηλαδή, καλείται μια μεταβλητή περιβάλλοντος
POSIXLY_CORRECT
έχει οριστεί. Αν είναι έτσι,
du
προεπιλογή σε μέγεθος μπλοκ 512 byte.
Λοιπόν, πώς μπορούμε να μάθουμε ποιο είναι σε χρήση; Μπορείτε να ελέγξετε κάθε μεταβλητή περιβάλλοντος για να το επεξεργαστείτε, αλλά υπάρχει πιο γρήγορος τρόπος. Ας συγκρίνουμε τα αποτελέσματα με το μέγεθος μπλοκ που χρησιμοποιεί το σύστημα αρχείων.
Για να ανακαλύψουμε το μέγεθος του μπλοκ που χρησιμοποιεί το σύστημα αρχείων, θα χρησιμοποιήσουμε το
tune2fs
πρόγραμμα. Στη συνέχεια θα χρησιμοποιήσουμε το
-l
(
λίστα superblock
) επιλογή, διοχετεύστε την έξοδο μέσω
grep
και μετά
γραμμές εκτύπωσης που περιέχουν
τη λέξη «Μπλοκ».
Σε αυτό το παράδειγμα, θα δούμε το σύστημα αρχείων στο πρώτο διαμέρισμα του πρώτου σκληρού δίσκου,
sda1
και θα χρειαστεί να χρησιμοποιήσουμε
sudo
:
sudo tune2fs -l /dev/sda1 | grep Block
Το μέγεθος του μπλοκ συστήματος αρχείων είναι 4.096 byte. Αν το διαιρέσουμε με το αποτέλεσμα που πήραμε
du
(τέσσερα), δείχνει το
du
Το προεπιλεγμένο μέγεθος μπλοκ είναι 1.024 byte. Τώρα γνωρίζουμε πολλά σημαντικά πράγματα.
Πρώτον, γνωρίζουμε ότι η μικρότερη ποσότητα ακίνητης περιουσίας του συστήματος αρχείων που μπορεί να διατεθεί για την αποθήκευση ενός αρχείου είναι 4.096 byte. Αυτό σημαίνει ότι ακόμη και το μικροσκοπικό μας αρχείο δύο byte καταλαμβάνει 4 KB χώρου στον σκληρό δίσκο.
Το δεύτερο πράγμα που πρέπει να έχετε κατά νου είναι οι εφαρμογές που είναι αφιερωμένες στην αναφορά στατιστικών στοιχείων σκληρού δίσκου και συστήματος αρχείων, όπως π.χ
du
,
ls
και
tune2fs
, μπορεί να έχει διαφορετικές έννοιες για το τι σημαίνει “μπλοκ”. ο
tune2fs
η εφαρμογή αναφέρει αληθινά μεγέθη μπλοκ συστήματος αρχείων, ενώ
ls
και
du
μπορεί να διαμορφωθεί ή να αναγκαστεί να χρησιμοποιήσει άλλα μεγέθη μπλοκ. Αυτά τα μεγέθη μπλοκ δεν προορίζονται να σχετίζονται με το μέγεθος του μπλοκ συστήματος αρχείων. είναι απλώς “κομ
μάτια
” που χρησιμοποιούν αυτές οι εντολές στην έξοδο τους.
Τέλος, εκτός από τη χρήση διαφορετικών μεγεθών μπλοκ, οι απαντήσεις από
du
και
tune2fs
μεταφέρουν το ίδιο νόημα. ο
tune2fs
το αποτέλεσμα ήταν ένα μπλοκ 4.096 byte, και το
du
Το αποτέλεσμα ήταν τέσσερα μπλοκ των 1.024 byte.
Χρήση του du για Έλεγχος μεγέθους αρχείου
Χωρίς παραμέτρους ή επιλογές γραμμής εντολών,
du
παραθέτει το συνολικό χώρο στο δίσκο που χρησιμοποιεί ο τρέχων κατάλογος και όλοι οι υποκατάλογοι.
Ας ρίξουμε μια ματιά σε ένα παράδειγμα:
du
Το μέγεθος αναφέρεται στο προεπιλεγμένο μέγεθος μπλοκ 1.024 byte ανά μπλοκ. Ολόκληρο το δέντρο υποκαταλόγου διασχίζεται.
Χρησιμοποιώντας
du
σε διαφορετικό κατάλογο
du
Αν θέλεις
du
για αναφορά σε διαφορετικό κατάλογο από τον τρέχοντα, μπορείτε να περάσετε τη διαδρομή προς τον κατάλογο στη γραμμή εντολών:
du ~/.cach/evolution/
Χρησιμοποιώντας
du
σε ένα συγκεκριμένο αρχείο
du
Αν θέλεις
du
για να αναφέρετε ένα συγκεκριμένο αρχείο, περάστε τη διαδρομή προς αυτό το αρχείο στη γραμμή εντολών. Μπορείτε επίσης να περάσετε ένα μοτίβο φλοιού σε μια επιλεγμένη ομάδα αρχείων, όπως π.χ
*.txt
:
du ~/.bash_aliases
Αναφορά για αρχεία σε καταλόγους
Να έχω
du
αναφορά για τα αρχεία στον τρέχοντα κατάλογο και υποκαταλόγους, χρησιμοποιήστε το
-a
(όλα τα αρχεία) επιλογή:
du -a
Για κάθε κατάλογο, αναφέρεται το μέγεθος κάθε αρχείου, καθώς και ένα σύνολο για κάθε κατάλογο.
Περιορισμός βάθους δέντρου καταλόγου
Μπορείς να πεις
du
για να παραθέσετε το δέντρο καταλόγου σε ένα συγκεκριμένο βάθος. Για να το κάνετε αυτό, χρησιμοποιήστε το
-d
(μέγιστο βάθος) και παρέχει μια τιμή βάθους ως παράμετρο. Λάβετε υπόψη ότι όλοι οι υποκατάλογοι σαρώνονται και χρησιμοποιούνται για τον υπολογισμό των αναφερόμενων συνόλων, αλλά δεν περιλαμβάνονται όλοι στη λίστα. Για να ορίσετε ένα μέγιστο βάθος καταλόγου ενός επιπέδου, χρησιμοποιήστε αυτήν την εντολή:
du -d 1
Η έξοδος παραθέτει το συνολικό μέγεθος αυτού του υποκαταλόγου στον τρέχοντα κατάλογο και παρέχει επίσης ένα σύνολο για κάθε έναν.
Για να απαριθμήσετε καταλόγους ένα επίπεδο βαθύτερα, χρησιμοποιήστε αυτήν την εντολή:
du -d 2
Ρύθμιση του μεγέθους μπλοκ
Μπορείτε να χρησιμοποιήσετε το
block
επιλογή για να ορίσετε ένα μέγεθος μπλοκ
du
για την τρέχουσα λειτουργία. Για να χρησιμοποιήσετε ένα μέγεθος μπλοκ ενός byte, χρησιμοποιήστε την ακόλουθη εντολή για να λάβετε τα ακριβή μεγέθη των καταλόγων και των αρχείων:
du --block=1
Εάν θέλετε να χρησιμοποιήσετε μέγεθος μπλοκ ενός megabyte, μπορείτε να χρησιμοποιήσετε το
-m
(megabyte) επιλογή, η οποία είναι ίδια με
--block=1M
:
du -m
Εάν θέλετε τα μεγέθη που αναφέρονται στο καταλληλότερο μέγεθος μπλοκ σύμφωνα με το χώρο στο δίσκο που χρησιμοποιείται από τους καταλόγους και τα αρχεία, χρησιμοποιήστε το
-h
επιλογή (αναγνώσιμη από τον άνθρωπο):
du -h
Για να δείτε το προφανές μέγεθος του αρχείου και όχι το μέγεθος του χώρου στον σκληρό δίσκο που χρησιμοποιείται για την αποθήκευση του αρχείου, χρησιμοποιήστε το
--apparent-size
επιλογή:
du --apparent-size
Μπορείτε να το συνδυάσετε με το
-a
(όλα) επιλογή για να δείτε το προφανές μέγεθος κάθε αρχείου:
du --apparent-size -a
Κάθε αρχείο παρατίθεται, μαζί με το προφανές μέγεθός του.
Εμφάνιση μόνο συνόλων
Αν θέλεις
du
για να αναφέρετε μόνο το σύνολο για τον κατάλογο, χρησιμοποιήστε το
-s
(συνοψίζω) επιλογή. Μπορείτε επίσης να το συνδυάσετε με άλλες επιλογές, όπως το
-h
επιλογή (αναγνώσιμη από τον άνθρωπο):
du -h -s
Εδώ, θα το χρησιμοποιήσουμε με το
--apparent-size
επιλογή:
du --apparent-size -s
Εμφάνιση χρόνων τροποποίησης
Για να δείτε την ώρα και την ημερομηνία δημιουργίας ή τελευταίας τροποποίησης, χρησιμοποιήστε το
--time
επιλογή:
du --time -d 2
Παράξενα αποτελέσματα;
Αν δείτε περίεργα αποτελέσματα από
du
, ειδικά όταν διασταυρώνετε μεγέθη στην έξοδο από άλλες εντολές, συνήθως οφείλεται στα διαφορετικά μεγέθη μπλοκ στα οποία μπορούν να οριστούν διαφορετικές εντολές ή σε αυτά στα οποία έχουν προεπιλεγεί. Θα μπορούσε επίσης να οφείλεται στις διαφορές μεταξύ των πραγματικών μεγεθών αρχείων και του χώρου στο δίσκο που απαιτείται για την αποθήκευσή τους.
Εάν χρειάζεται να ταιριάξετε την έξοδο άλλων εντολών, πειραματιστείτε με το
--block
επιλογή σε
du
.
VIA:
HowToGeek.com
