Як я можу перевірити фактичний розмір, який використовується в каталозі NTFS, з багатьма твердими посиланнями?


14

У томі Win7 NTFS я використовую cwrsync, який правильно підтримує --link-dest, щоб створити резервні копії типу "знімок". Отже, у мене є:

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

Вміст 2010-12-02 здебільшого є жорсткими посиланнями на файли в каталозі 2010-11-28, але є кілька нових або змінених файлів лише у 2010-12-02. У linux утиліта "du" підкаже мені фактичний розмір, зроблений кожним покроковим знімком. У Windows Explorer і du під cygwin обдурені жорсткими посиланнями і показує, що 2010-12-02 займає трохи більше місця, ніж 2010-11-28.

Чи є утиліта Windows, яка буде показувати правильний простір, що використовується акустично?


Інструменти для вирішення цього питання будуть дуже корисними для отримання точного зображення про те, чому папка / winxs стає такою великою, і чи можна її зменшити? and
matt wilkie

Це, здається, питання декактора та відповіді для нормального використання диска: Як я візуалізую використання файлової системи в Windows?
matt wilkie

Відповіді:


11

Спробуйте скористатися дисковим використанням Sysinternals (інакше знаю як du), спеціально за допомогою -uі -vпрапори будуть враховуватись лише унікальні події та відображатиметься використання кожної папки в міру її подальшого використання.

Наскільки я знаю, файлова система не показує різниці між початковим файлом і жорстким посиланням (це справді сенс жорсткого посилання), тому ви не можете знизити їх у папці за папкою, але потрібно робити це порівняльно.

Для тестування я створив випадкову папку з 6 файлами в. Клонували всю справу. Потім створили кілька жорстких і м'яких посилань всередині першої папки для посилання на інші файли в першій папці, а також деякі в другій.

du -u -v testFldРезультати запуску в (відзначте значення поруч із папками в 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

Виконання du -u -v testFld\aрезультатів у:

104  <path>\testFld\a
...

Виконання du -u -v testFld\bрезультатів у:

74   <path>\testFld\b
...

Помічаєте невідповідність?
Символьні посилання в A, які посилаються на файли в B, зараховуються лише до A під час "повного" запуску, а B повертається лише 54 (навіть незважаючи на те, що файли спочатку були у B та жорстко пов'язані з A). Коли ви вимірюєте B окремо (або, якщо ви не використовуєте -uунікальний прапор), він вважатиме його "повним" мірою 74.


1
Дякую, я не знав про sysinternals du, просто про cygwin. Мабуть, cygwin du робить і те, що я хочу, я просто не думав пробувати це перед тим, як розпочати баунті.
kbyrd

Ця відповідь плутає функцію -uпрапора. Ви отримуєте «повну» міру , якщо ви використовуєте на -uпрапор. Без нього він налічує лише 1 екземпляр будь-якого жорстко пов'язаного файлу. Так сказано в документах: docs.microsoft.com/en-gb/sysinternals/downloads/du і тестування це підтверджує.
martixy

2

PowerShell 5 може бути варіантом. Він доступний для Windows 7, але я протестував це лише на Server 2012 R2 з попереднім переглядом квітня 2015 року

Постачальник файлової системи в PowerShell 5 має два нових властивості LinkTypeі Target:

ls taskmgr.exe | fl LinkType,Target

це повертає:

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

Тож тепер я можу показувати лише всі файли в system32, які не є жорсткими посиланнями:

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

це повертає:

Count    : 844
Sum      : 502,486,831

Ви можете порівняти це з усіма файлами:

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

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

Тож понад 13 000 файлів з 2 ГБ + є жорсткими посиланнями


1

TreeSize Professional (~ 55 доларів США, 30-денний пробний термін) заявляє про необхідність зменшити простір на жорсткому посиланні NTFS. Швидке випробування, здається, це підтверджує.

Підтримка жорсткого посилання не вмикається у вікні: перейдіть до Інструменти> Параметри> Сканувати , повторно сканувати, а потім використовуйте Ctrl-1та Ctrl-2перемикайтесь між розміром та виділеним простором. Виділений фактичний використаний простір, тоді як Розмір - це статистика, про яку зазвичай повідомляють інші програми.

Існує штраф за продуктивність за ввімкнення підтримки жорсткого посилання (а також символьні посилання та кріплення, якщо ви теж бажаєте цього). Колірна палітра є гарною на мій смак, але це, здається, не відповідає курсу в цьому жанрі. Також будьте обережні, клацнувши в області діаграми вікна - легко випадково перемістити папку з помилковим перетягуванням, коли ви мали намір лише розгорнути її.


1

Я думаю, що тут потрібно встановити деякі факти.

Windows не може "виявити" жорсткі посилання, оскільки кожен файл насправді є посиланням на купу байтів на диску.

Інструмент du виявляє дублікати, але це також помилково, оскільки якщо папка A містить файли, а B містить лише жорсткі посилання на файли в A, то du з A і du з B повернуть ту саму відповідь - розмір файлів, що надходять спочатку від A, але ці файли тепер також у B.

Це насправді правильно, оскільки, наприклад, якщо ви видалили A, то його файли не будуть видалені на диску, оскільки вони все ще посилаються на B. З жорсткими посиланнями, який файл є джерелом, а який - жорстким посиланням досить довільно і безглуздо.

Такі продукти, як du, перелічать каталог, знижуючи дублікати. Це працюватиме лише в тому випадку, якщо всі файли та жорсткі посилання містяться в одному каталозі. Багато продуктів із списком папок роблять це.

Висновок: із жорсткими посиланнями питання про "фактичний розмір, який використовується в каталозі NTFS", безглуздий.


1

Я також роблю деякі дослідження з цього питання. Ось результати, які я відкрив.

Розмір папки, що містить файли з твердими посиланнями в NTFS, може розглядатися в трьох різних значеннях:

  1. Розмір, включаючи розміри всіх файлів з твердим посиланням (що показано WE).
  2. Розмір унікальних файлів лише з точки зору поточної папки.
  3. Розмір унікальних файлів лише з точки зору всього диску.

Число 2 - це те, що відображається TreeSize Professional, на вкладці «Подробиці», виділений стовпець, якщо включена опція «Відстеження твердих посилань NTFS».

Ось додатково для папки winxs (7,5 Гб в опозиції для 10):

зображення

Отримання значення №3 досі залишається для мене питанням. Хоча мені вдалося отримати нижню межу, використовуючи Total Commander з плагіном NL_Info. У мене є розмір, який займають файли, які містять одне тверде посилання (унікальні файли). Це було для 5Gb для даного прикладу.

Тому намагаєтесь розширити відповідь Harrymc або сказати іншими словами.


0

Ви можете використовувати ln.exe, щоб показати "справжній розмір" дерева каталогу:

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

Він виявить лише жорсткі посилання під цією початковою папкою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.