เหตุใด du -sl จึงแสดงขนาดต่างกันสำหรับแหล่งที่มาและผลลัพธ์ของ cp -rl


5

ฉันเคยcp -rlคัดลอกโฟลเดอร์ เมื่อทำการวัดขนาดของแหล่งที่มาและผลลัพธ์ของการทำสำเนาdu -slจะส่งคืนขนาดที่แตกต่างกันเล็กน้อยถึงแม้ว่าจะdiffยืนยันว่าเนื้อหานั้นเหมือนกัน:

$ cp -rl folderA/ folderB/
$ du -sl folderA folderB
98561224 folderA
98590512 folderB
$ diff --brief -ra folderA/ folderB/
$

ทั้งสองโฟลเดอร์อยู่ในฮาร์ดไดรฟ์เดียวกันไม่มีการแก้ไขใด ๆ ระหว่างการคัดลอกและการวัด ฉันไม่พบสิ่งใดในเอกสารประกอบduและcpสามารถอธิบายความแตกต่างได้

คำตอบ:


2

ลองใช้ตัวเองและฉันพบความแตกต่างในขนาดมาจากไฟล์ไดเรกทอรี เนื่องจากไฟล์เหล่านี้ไม่ใช่ฮาร์ดลิงก์พวกเขาจึงเป็นไฟล์ใหม่ที่ถูกสร้างขึ้นอาจไม่ใช่เมตาดาต้าที่เหมือนกันทุกประการใช่หรือไม่

เพื่อแสดงให้เห็นถึงการรันคำสั่งต่อไปนี้:

ls -alR folderA/ | grep -v '^d' | awk '{total += $5} END {print "Total:", total}'
ls -alR folderB/ | grep -v '^d' | awk '{total += $5} END {print "Total:", total}'

ขนาดเหล่านี้ควรเหมือนกัน (ไม่รวมไฟล์ dir) คุณสามารถพิมพ์รายชื่อที่มีขนาดไดเรกทอรีและผลที่แตกต่างกันเพื่อค้นหา dirs ที่แตกต่างกัน


แน่นอนผลลัพธ์ที่ได้จะเหมือนกัน
Laurent Giroud

ฉันก็พบว่ามันเป็นไฟล์ไดเรกทอรีที่แตกต่างกัน แต่ทำไมถึงเป็นอย่างนี้?
tekumara

ในไดเรกทอรี linux นั้นเป็นไฟล์จริง ๆ แล้วมันเป็นของพิเศษ ฉันไม่แน่ใจว่าทำไมถึงมีความแตกต่างอย่างแท้จริง แต่อาจเกี่ยวข้องกับเมตาดาต้าที่จัดเก็บโดยระบบไฟล์ ไดเรกทอรีดั้งเดิมของคุณอาจมีขนาดที่ใหญ่กว่าเนื่องจากเคยมีไฟล์มากกว่านี้ แต่ถูกลบออก (?) ไฟล์ที่ถูกลบเหล่านี้เพิ่ม "padding" ลงในข้อมูลเมตาของไฟล์ dir ซึ่งไม่ได้ใช้อีกต่อไป ดังนั้นเมื่อสำเนาถูกคัดลอกแล้วก็ไม่จำเป็นต้องคัดลอกข้อมูลเก่าดังนั้นจึงมีขนาดเล็กลง PS นี่คือการคาดเดาทั้งหมด หากคุณพบโปรดตอบกลับ
Nicholi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.