Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux



Βασικά Takeaways

  • Το πραγματικό μέγεθος ενός αρχείου, που είναι ο αριθμός των byte που συνθέτουν το αρχείο, και το πραγματικό μέγεθος στον σκληρό δίσκο, που είναι ο αριθμός των μπλοκ συστήματος αρχείων που απαιτούνται για την αποθήκευσή του, διαφέρουν λόγω της κατανομής του χώρου στο δίσκο σε μπλοκ.
  • Η εντολή du μπορεί να χρησιμοποιηθεί για τον έλεγχο του μεγέθους των αρχείων, των καταλόγων και του συνολικού χώρου στο δίσκο που χρησιμοποιείται από τον τρέχοντα κατάλογο και τους υποκαταλόγους.
  • Εκτελέστε το “du -h” για να δείτε μια λίστα αρχείων και φακέλων σε μορφή αναγνώσιμη από τον άνθρωπο.

Όταν χρησιμοποιείτε το


du

εντολή, λαμβάνετε τόσο την πραγματική χρήση του δίσκου όσο και το πραγματικό μέγεθος ενός αρχείου ή καταλόγου. Θα εξηγήσουμε γιατί αυτές οι

δεν είναι ίδιες.

Γιατί η πραγματική χρήση του δίσκου και το πραγματικό μέγεθος είναι διαφορετικά;

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

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

Χρησιμοποιούνται δύο μετρήσεις σε σχέση με το μέγεθος του αρχείου. Το πρώτο είναι το πραγματικό μέγεθος του αρχείου, το οποίο είναι ο αριθμός των byte περιεχομένου που απαρτίζουν το αρχείο. Το δεύτερο είναι το πραγματικό μέγεθος του αρχείου στον σκληρό δίσκο. Αυτός είναι ο αριθμός των μπλοκ συστήματος αρχείων που απαιτούνται για την αποθήκευση αυτού του αρχείου.

Πώς να ελέγξετε το μέγεθος ενός αρχείου

Ας δούμε ένα απλό παράδειγμα. Θα ανακατευθύνουμε έναν χαρακτήρα σε ένα αρχείο για να δημιουργήσουμε ένα μικρό αρχείο:

echo "1" > geek.txt


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr
geek.txt σε παράθυρο τερματικού” style=”display:block;height:auto;max-width:100%;” data-img-url=”https://static1.howtogeekimages.com/wordpress/wp-content/ uploads/2019/12/30.png” />

Τώρα, θα χρησιμοποιήσουμε τη λίστα μεγάλης μορφής,

ls

για να δείτε το μήκος του αρχείου:

ls -l geek.txt

Το μήκος είναι η αριθμητική τιμή που ακολουθεί το

dave dave

καταχωρήσεις, που είναι δύο byte. Γιατί είναι δύο byte όταν στείλαμε μόνο έναν χαρακτήρα στο αρχείο; Ας ρίξουμε μια ματιά στο τι συμβαίνει μέσα στο αρχείο.

Θα χρησιμοποιήσουμε το

hexdump

εντολή, η οποία θα μας δώσει έναν ακριβή αριθμό byte και θα μας επιτρέψει να “δούμε”

χαρακτήρες που δεν εκτυπώνονται ως δεκαεξαδικές τιμές

. Θα χρησιμοποιήσουμε επίσης το

-C

(κανονική) επιλογή για να αναγκάσετε την έξοδο να εμφανίζει δεκαεξαδικές τιμές στο

της εξόδου, καθώς και τα ισοδύναμα αλφαριθμητικών χαρακτήρων τους:

hexdump -C geek.txt


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Η έξοδος μας δείχνει ότι, ξεκινώντας από τη μετατόπιση 00000000 στο αρχείο, υπάρχει ένα byte που περιέχει μια δεκαεξαδική τιμή 31 και ένα που περιέχει μια δεκαεξαδική τιμή 0A. Το δεξιό τμήμα της εξόδου απεικονίζει αυτές τις τιμές ως αλφαριθμητικούς χαρακτήρες, όπου είναι δυνατόν.

Η δεκαεξαδική τιμή του 31 χρησιμοποιείται για την αναπαράσταση του ψηφίου. Η δεκαεξαδική τιμή του 0Α χρησιμοποιείται για να αναπαραστήσει τον χαρακτήρα Τροφοδοσίας γραμμής, ο οποίος δεν μπορεί να εμφανιστεί ως αλφαριθμητικός χαρακτήρας, επομένως εμφανίζεται ως τελεία (.). Ο χαρακτήρας Τροφοδοσία γραμμής προστίθεται από

echo

. Από προεπιλογή,

echo

ξεκινά μια νέα γραμμή αφού εμφανίσει το κείμενο που πρέπει να γράψει στο παράθυρο του τερματικού.

Αυτό αντιστοιχεί στην έξοδο από

ls

και συμφωνεί με το μήκος του αρχείου των δύο byte.

Τώρα, θα χρησιμοποιήσουμε το

du

εντολή για να δείτε το μέγεθος του αρχείου:

du geek.txt


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Λέει ότι το μέγεθος είναι τέσσερα, αλλά τέσσερα από τι;

Υπάρχουν μπλοκ, και μετά υπάρχουν μπλοκ

Οταν

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 


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Το μέγεθος του μπλοκ συστήματος αρχείων είναι 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


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Το μέγεθος αναφέρεται στο προεπιλεγμένο μέγεθος μπλοκ 1.024 byte ανά μπλοκ. Ολόκληρο το δέντρο υποκαταλόγου διασχίζεται.

Χρησιμοποιώντας

du

σε διαφορετικό κατάλογο

Αν θέλεις

du

για αναφορά σε διαφορετικό κατάλογο από τον τρέχοντα, μπορείτε να περάσετε τη διαδρομή προς τον κατάλογο στη γραμμή εντολών:

du ~/.cach/evolution/


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Χρησιμοποιώντας

du

σε ένα συγκεκριμένο αρχείο

Αν θέλεις

du

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

*.txt

:

du ~/.bash_aliases


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Αναφορά για αρχεία σε καταλόγους

Να έχω

du

αναφορά για τα αρχεία στον τρέχοντα κατάλογο και υποκαταλόγους, χρησιμοποιήστε το

-a

(όλα τα αρχεία) επιλογή:

du -a


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Για κάθε κατάλογο, αναφέρεται το μέγεθος κάθε αρχείου, καθώς και ένα σύνολο για κάθε κατάλογο.


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Περιορισμός βάθους δέντρου καταλόγου

Μπορείς να πεις

du

για να παραθέσετε το δέντρο καταλόγου σε ένα συγκεκριμένο βάθος. Για να το κάνετε αυτό, χρησιμοποιήστε το

-d

(μέγιστο βάθος) και παρέχει μια τιμή βάθους ως παράμετρο. Λάβετε υπόψη ότι όλοι οι υποκατάλογοι σαρώνονται και χρησιμοποιούνται για τον υπολογισμό των αναφερόμενων συνόλων, αλλά δεν περιλαμβάνονται όλοι στη λίστα. Για να ορίσετε ένα μέγιστο βάθος καταλόγου ενός επιπέδου, χρησιμοποιήστε αυτήν την εντολή:

du -d 1


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

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

Για να απαριθμήσετε καταλόγους ένα επίπεδο βαθύτερα, χρησιμοποιήστε αυτήν την εντολή:

du -d 2


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Ρύθμιση του μεγέθους μπλοκ

Μπορείτε να χρησιμοποιήσετε το

block

επιλογή για να ορίσετε ένα μέγεθος μπλοκ

du

για την τρέχουσα λειτουργία. Για να χρησιμοποιήσετε ένα μέγεθος μπλοκ ενός byte, χρησιμοποιήστε την ακόλουθη εντολή για να λάβετε τα ακριβή μεγέθη των καταλόγων και των αρχείων:

du --block=1


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Εάν θέλετε να χρησιμοποιήσετε μέγεθος μπλοκ ενός megabyte, μπορείτε να χρησιμοποιήσετε το

-m

(megabyte) επιλογή, η οποία είναι ίδια με

--block=1M

:

du -m


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

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

-h

επιλογή (αναγνώσιμη από τον άνθρωπο):

du -h


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Για να δείτε το προφανές μέγεθος του αρχείου και όχι το μέγεθος του χώρου στον σκληρό δίσκο που χρησιμοποιείται για την αποθήκευση του αρχείου, χρησιμοποιήστε το

--apparent-size

επιλογή:

du --apparent-size


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Μπορείτε να το συνδυάσετε με το

-a

(όλα) επιλογή για να δείτε το προφανές μέγεθος κάθε αρχείου:

du --apparent-size -a


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Κάθε αρχείο παρατίθεται, μαζί με το προφανές μέγεθός του.


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Εμφάνιση μόνο συνόλων

Αν θέλεις

du

για να αναφέρετε μόνο το σύνολο για τον κατάλογο, χρησιμοποιήστε το

-s

(συνοψίζω) επιλογή. Μπορείτε επίσης να το συνδυάσετε με άλλες επιλογές, όπως το

-h

επιλογή (αναγνώσιμη από τον άνθρωπο):

du -h -s


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Εδώ, θα το χρησιμοποιήσουμε με το

--apparent-size

επιλογή:

du --apparent-size -s


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Εμφάνιση χρόνων τροποποίησης

Για να δείτε την ώρα και την ημερομηνία δημιουργίας ή τελευταίας τροποποίησης, χρησιμοποιήστε το

--time

επιλογή:

du --time -d 2


Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, Πώς να αποκτήσετε το μέγεθος ενός αρχείου ή καταλόγου στο Linux, TechWar.gr

Παράξενα αποτελέσματα;

Αν δείτε περίεργα αποτελέσματα από

du

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

Εάν χρειάζεται να ταιριάξετε την έξοδο άλλων εντολών, πειραματιστείτε με το

--block

επιλογή σε

du

.


VIA:

HowToGeek.com


Leave A Reply



Cancel Reply

Your email address will not be published.