“ ขนาด” ของ symlink แสดงอะไรในเอาต์พุต ls


11

ฉันจะเริ่มจากตัวอย่าง:

$ ls -l dir1
total 4
-rw-r--r-- 4 maythux maythux 1650 2008-01-10 16:33 file
lrwxrwxrwx 1 maythux maythux  7 2008-01-15 15:17 symfile -> file

symfile เป็น symlink ของไฟล์ file

และอย่างที่ฉันรู้1650ก็คือขนาดของไฟล์fileแต่จำนวน7ที่วางไว้ใต้คอลัมน์ขนาดคือเท่าไหร่

แก้ไข: กำลังทำงานdu:

$ du -sh symfile
0   symfile

แล้วคุณจะพิสูจน์ได้อย่างไรว่า 7 คือขนาด symlink?!


UPDATE:

ลองนี้

$ touch file
$ du -sh file
0 file
$ ls -l file
-rw-rw-r-- 1 maythux maythux 0 Jun  1 19:42 file

ขนาดนั้นก็อยู่ที่นี่ด้วย 0

ขณะนี้:

$ ln -s file sym
$ du -sh sym
0 sym
$ ls -l sym
lrwxrwxrwx 1 maythux maythux 4 Jun  1 19:44 sym -> file

ดังนั้นฉันคิดว่ามันไม่ใช่แค่ขนาด


2
7ขึ้นอยู่กับระบบแฟ้ม (และพารามิเตอร์อื่น ๆ อาจจะ) มันคือ 7 ต่อ ext4 แต่อาจเป็น 13 สำหรับ btrfs และ 3 ใน tmpfs
muru

1
มันเป็นขนาด แต่ขนาดขึ้นอยู่กับระบบไฟล์ (btrfs เก็บข้อมูลเมตาได้มากกว่า ext4 และ ext4 มากกว่า tmpfs) คุณสามารถเติมดิสก์ด้วยลิงก์ ฉันแค่บอกว่าอย่าแปลกใจถ้าคุณเห็นตัวเลขที่แตกต่างกันในระบบไฟล์ที่แตกต่างกัน
muru


1
รายการไดเรกทอรีของคุณมีขนาดขั้นต่ำที่ใหญ่กว่าความต้องการ ทำรายการให้เพียงพอและขนาดของไดเรกทอรีจะเพิ่มขึ้น mkdir foo; ls -ld foo; for i in {1..1000}; do ln -s foo/bar foo/$i; done; ls -ld fooตรวจสอบกับ:
muru

คำตอบ:


13

ลิงก์สัญลักษณ์ใช้พื้นที่ในการจัดเก็บชื่อและเป้าหมายรวมถึงไม่กี่ไบต์สำหรับเมตาดาต้าอื่น ๆ

ดังนั้นมันคือขนาดของ symlink

เกี่ยวกับขนาดจากdu -sh: du ดูที่จำนวนบล็อกที่ถูกจัดสรรเท่านั้นและอาจแสดง 0 statและls -lดีกว่าในการแสดงขนาดในเรื่องนั้น


ถ้าอย่างนั้นทำไมdu -sh symfileให้ 0 -
Maythux

ดูเฉพาะจำนวนบล็อกที่จัดสรรและดังนั้นอาจแสดง 0. สถิติและ ls -l ฉลาดขึ้น
Rinzwind

โปรดอ่านอัปเดต
Maythux

ดูคำตอบของฉัน: เป็นชื่อเป้าหมายและข้อมูลเมตาบางส่วน โดยรวมแล้วประกอบด้วย 7 ไบต์ ระบบปฏิบัติการอื่นเก็บข้อมูลเมตาอื่น ๆ และจะมีขนาดแตกต่างกัน
Rinzwind

คำถามคือ "คุณจะพิสูจน์ได้อย่างไร"
Pilot6

5

มันคือขนาดของ symlink ในหน่วยไบต์

บางระบบไฟล์มีพื้นที่เล็ก ๆ ภายในรายการไดเรกทอรีที่ใช้สำหรับการเริ่มต้นของไฟล์ซึ่งความเร็วในการประมวลผล symlink และอ่านเล็ก ๆ (คิดfile) อย่างมีนัยสำคัญที่ค่าใช้จ่ายของรายการไดเรกทอรีขนาดใหญ่

หากเนื้อหา symlink ทั้งหมดพอดีกับรายการไดเรกทอรีจะไม่มีการจัดสรรบล็อกข้อมูลและduขนาดจะแสดงเป็นศูนย์ หาก symlink ไม่พอดีพื้นที่ว่างจะถูกจัดสรรตามปกติ (ดังนั้นคุณจะได้รับการจัดสรรบล็อกเดียว) ซึ่งระบบไฟล์อาจปรับให้เหมาะสมโดยใช้การรวมส่วนท้าย (แต่ไม่มี API สำหรับduให้รู้เกี่ยวกับเรื่องนี้)

ext4ดำเนินการเพิ่มประสิทธิภาพระบบแฟ้มนี้ symlinks เพียงเกณฑ์ที่พบในการทำงานext4_inode_is_fast_symlink


" ระบบไฟล์บางระบบ ... " - คำตอบของคุณจะดีขึ้นหากคุณแสดงรายการระบบไฟล์ทั่วไปด้วยคุณสมบัตินี้
RM

1

นี่คือขนาดของไฟล์ symlink ในหน่วยไบต์

ไฟล์ Symlink เป็นไฟล์ปกติที่เก็บข้อมูลที่เกี่ยวข้องกับไฟล์ที่ชี้ไป ในต่อ 4 มันคือ 7 ไบต์


ขนาดอะไร มันเป็นไบต์หรือบิตหรืออะไร
Maythux

ขนาดเป็นไบต์ ..
Pilot6

1
ถ้าอย่างนั้นทำไมdu -sh symfileให้ 0
Maythux

คุณไม่ได้ขึ้นต้นด้วยไฟล์ขนาดเล็กมาก ลองใช้ du ที่ไฟล์ 99 ไบต์ มันจะแสดง 4.0K
Pilot6

นั่นคือ pioint ของฉันแล้วอย่างน้อยก็ควรแสดง 4k สำหรับ symlink เนื่องจากในแนวคิดระบบปฏิบัติการมันลงทะเบียนคลัสเตอร์สำหรับไฟล์นี้
Maythux
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.