Làm cách nào để kiểm tra kích thước thực tế được sử dụng trong thư mục NTFS có nhiều liên kết cứng?


14

Trên ổ đĩa NTFS của Win7, tôi đang sử dụng cwrsync hỗ trợ chính xác --link-Dest để tạo bản sao lưu kiểu "ảnh chụp nhanh". Vì vậy, tôi có:

z:\backups\2010-11-28\cygdrive\c\Users\...
z:\backups\2010-12-02\cygdrive\c\Users\...

Nội dung của 2010-12-02 chủ yếu là các liên kết cứng trở lại các tệp trong thư mục 2010-11-28, nhưng có một vài tệp mới hoặc đã thay đổi chỉ trong 2010-12-02. Trên linux, tiện ích 'du' sẽ cho tôi biết kích thước thực tế được chụp bởi mỗi ảnh chụp nhanh tăng dần. Trên Windows, explorer và du theo cygwin đều bị đánh lừa bởi các liên kết cứng và cho thấy 2010-12-02 chiếm không gian nhiều hơn một chút so với 2010-11-28.

Có tiện ích Windows nào sẽ hiển thị không gian chính xác được sử dụng không?


Các công cụ giải quyết vấn đề này sẽ rất hữu ích trong việc có được một bức tranh chính xác về lý do tại sao thư mục / wonxs phát triển quá lớn và nó có thể được làm nhỏ hơn không?
matt wilkie

đây dường như là câu hỏi và câu trả lời cho yếu tố sử dụng đĩa thông thường: Làm cách nào tôi có thể hình dung việc sử dụng hệ thống tệp trên Windows?
matt wilkie

Câu trả lời:


11

Hãy thử sử dụng Sysiternals Disk Use (nếu không biết là du), cụ thể sử dụng cờ -u-vsẽ chỉ tính các lần xuất hiện duy nhất và sẽ hiển thị mức sử dụng của từng thư mục khi nó đi cùng.

Theo tôi biết, hệ thống tệp không hiển thị sự khác biệt giữa tệp gốc và liên kết cứng (đó thực sự là điểm của liên kết cứng), vì vậy bạn không thể giảm giá chúng trên cơ sở từng thư mục, nhưng cần phải làm điều này một cách tương đối.

Để kiểm tra tôi đã tạo một thư mục ngẫu nhiên có 6 tệp vào. Nhân bản toàn bộ. Sau đó, tạo một số liên kết cứng và mềm bên trong thư mục đầu tiên để tham chiếu các tệp khác trong thư mục đầu tiên và một số liên kết trong thư mục thứ hai.

Chạy du -u -v testFldkết quả trong (lưu ý các giá trị bên cạnh các thư mục nằm trong KiB):

       104  <path>\testFld\A
        54  <path>\testFld\B
       149  <path>\testFld

Totals:
Files:        12
Directories:  2
Size:         162,794 bytes
Size on disk: 162,794 bytes

Chạy du -u -v testFld\akết quả trong:

104  <path>\testFld\a
...

Chạy du -u -v testFld\bkết quả trong:

74   <path>\testFld\b
...

Chú ý sự không phù hợp?
Các liên kết tượng trưng trong A liên quan đến các tệp trong B chỉ được tính vào A trong khi chạy "đầy đủ" và B chỉ trả về 54 (mặc dù các tệp ban đầu ở B và được liên kết cứng từ A). Khi bạn đo B riêng biệt (hoặc, nếu bạn không sử dụng -ucờ duy nhất), nó sẽ tính số đo "đầy đủ" là 74.


1
Cảm ơn, tôi đã không biết về sysiternals du, chỉ là một cygwin. Rõ ràng cygwin du cũng làm những gì tôi muốn, tôi chỉ không nghĩ sẽ thử nó trước khi bắt đầu tiền thưởng.
kbyrd

Câu trả lời này gây nhầm lẫn chức năng của -ucờ. Bạn nhận được "đầy đủ" biện pháp nếu bạn sử dụng các -ulá cờ. Không có nó, nó chỉ tính 1 thể hiện của bất kỳ tệp nào được liên kết cứng. Nói như vậy trong các tài liệu: docs.microsoft.com/en-gb/sysiternals/doads/du và kiểm tra xác minh nó.
martixy

2

PowerShell 5 có thể là một tùy chọn. Nó có sẵn cho Windows 7 nhưng tôi chỉ thử nghiệm điều này trên Server 2012 R2 với Bản xem trước tháng 4 năm 2015

Nhà cung cấp hệ thống tệp trong PowerShell 5 có hai thuộc tính mới LinkTypeTarget:

ls taskmgr.exe | fl LinkType,Target

cái này trả về:

LinkType : HardLink
Target   : C:\Windows\WinSxS\amd64_microsoft-windows-advancedtaskmanager_..._6.3.9600.17..2\Taskmgr.exe

Vì vậy, bây giờ tôi chỉ có thể hiển thị tất cả các tệp trong system32 không phải là liên kết cứng:

cd $env:SystemRoot\System32
ls -Recurse -File -force -ErrorAction SilentlyContinue | ? LinkType -ne HardLink | Measure-Object -Property Length -Sum

cái này trả về:

Count    : 844
Sum      : 502,486,831

bạn có thể so sánh với tất cả các tệp:

ls -Recurse -File -force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum

Count    : 14092
Sum      : 2,538,256,262

Vì vậy, hơn 13.000 tệp có 2GB + là liên kết cứng


1

TreeSize Professional (~ $ 55, dùng thử 30 ngày) tuyên bố sẽ làm mất dung lượng đĩa cứng NTFS. Một thử nghiệm nhanh dường như chịu được điều này.

Hỗ trợ liên kết cứng không được bật ra khỏi hộp: đi tới Công cụ> Tùy chọn> Quét , quét lại, sau đó sử dụng Ctrl-1Ctrl-2để chuyển giữa không gian Kích thướcPhân bổ . Phân bổ là không gian thực tế được sử dụng, trong khi Kích thước là số liệu thống kê thường được báo cáo bởi các chương trình khác.

Có một hình phạt hiệu suất để bật hỗ trợ liên kết cứng (và cả liên kết tượng trưng và gắn kết nếu bạn cũng muốn điều đó). Bảng màu là sặc sỡ theo sở thích của tôi, nhưng đó dường như là ngang bằng với khóa học trong thể loại này. Ngoài ra, hãy cẩn thận khi nhấp xung quanh trong khu vực biểu đồ hộp - thật dễ dàng để vô tình di chuyển một thư mục với thao tác kéo-n-drop nhầm khi bạn chỉ có ý định mở rộng nó.


1

Tôi nghĩ rằng một số sự thật cần phải được đặt ra ở đây.

Windows không thể "phát hiện" các liên kết cứng, vì mọi tệp thực sự là một liên kết cứng đến một loạt byte trên đĩa.

Công cụ du phát hiện các bản sao, nhưng điều đó cũng sai, vì nếu thư mục A chứa các tệp và B chỉ chứa các liên kết cứng đến các tệp trong A, thì du của A du của B sẽ trả về cùng một câu trả lời - kích thước của các tệp sắp tới từ A, nhưng các tệp này hiện cũng ở B.

Điều này thực sự đúng, vì ví dụ nếu bạn đã xóa A thì các tệp của nó sẽ không bị xóa trên đĩa, bởi vì chúng vẫn được tham chiếu bởi B. Với các liên kết cứng, tệp nào là nguồn và tệp nào là liên kết cứng khá độc đoán và vô nghĩa.

Các sản phẩm như du sẽ liệt kê một thư mục trong khi giảm giá trùng lặp. Điều này sẽ chỉ hoạt động nếu tất cả các tệp và liên kết cứng được chứa trong một thư mục. Nhiều sản phẩm danh sách thư mục làm điều đó.

Kết luận: Với các liên kết cứng, câu hỏi về "kích thước thực tế được sử dụng trong thư mục NTFS" là vô nghĩa.


1

Tôi cũng làm một số nghiên cứu về câu hỏi này. Đây là kết quả tôi phát hiện ra.

Kích thước thư mục chứa các tệp liên kết cứng trong NTFS có thể được xem xét theo ba nghĩa khác nhau:

  1. Kích thước bao gồm kích thước của tất cả các tệp liên kết cứng (được hiển thị bởi WE).
  2. Kích thước của các tệp duy nhất chỉ trong điều khoản của thư mục hiện tại.
  3. Kích thước của các tệp duy nhất chỉ trong điều khoản của toàn bộ đĩa.

Số 2 là số được hiển thị bởi TreeSize Professional, trong tab Chi tiết, cột Phân bổ, nếu tùy chọn "Theo dõi liên kết cứng NTFS" được bật.

Đây là ví dụ cho thư mục winxs (7.5Gb đối lập cho 10):

hình ảnh

Nhận được giá trị số 3 vẫn là một câu hỏi đối với tôi. Mặc dù tôi đã có thể có được giới hạn thấp hơn bằng cách sử dụng Total Commander với plugin NL_Info. Những gì tôi có là một kích thước bị chiếm bởi các tệp có một liên kết cứng (các tệp duy nhất). Đó là khoảng 5Gb cho một ví dụ.

Vì vậy, cố gắng để mở rộng câu trả lời harrymc hoặc nói cách khác.


0

Bạn có thể sử dụng ln.exe để hiển thị "kích thước thật" của cây thư mục:

ln.exe --truesize z:\backups\.

Nó sẽ chỉ phát hiện các liên kết cứng bên dưới thư mục bắt đầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.