1

Я столкнулся с вопросом, пытаясь выяснить, какие файлы на моем компьютере занимают больше всего места. Вот информация об общем объеме памяти компьютера, найденная в подсистеме Windows для Linux (WSL) / bash

bballdave025@WORK:~$ df -h /mnt/c
Filesystem      Size  Used Avail Use% Mounted on
C:              239G  231G  7.8G  97% /mnt/c

Обратите внимание, что мой вопрос не о том, как очистить пространство.

Я начал с проверки каталога Program Files .

bballdave025@WORK:~$ du -sh /mnt/c/Program\ Files/
du: cannot read directory '/mnt/c/Program Files/Microsoft Policy Platform/authorityDb': Permission denied
du: cannot read directory '/mnt/c/Program Files/Microsoft SQL Server/130/Shared/ErrorDumps': Permission denied
du: cannot read directory '/mnt/c/Program Files/WindowsApps': Permission denied
2.5T    /mnt/c/Program Files/

Главный выпуск

Мой WSL bash du говорит мне, что на моей машине (которая имеет 239GB памяти), мой каталог Program Files занимает 2,5 ТБ из 239GB доступной памяти. Как будто я держу две пинты воды во рту, не глотая. (Это просто, чтобы показать соотношение размеров - моя проблема не связана с водой.)

Кстати, у меня нет прав администратора - не sudo !! решать любые вопросы. Я покину из Permission denied ошибки отказа (что наступит без реального sudo , как я продолжу писать этот пост. Также обратите внимание, что я работаю на компьютере, поэтому есть вещи, к которым у меня нет доступа.

Основной вопрос: есть ли относительно простой способ проверить использование диска в моей ситуации, то есть проверить использование диска на диске Windows C: с помощью подсистемы Windows для Linux?

Вторичный вопрос: какого черта здесь происходит? Почему я получаю сообщение о том, что мой каталог Program Files занимает в 10 раз больше места, чем на моем компьютере?

Кстати... Windows сообщает мне, что размер Program Files составляет 4.83 GB , и этот факт я обнаружил с помощью File Explorer , щелкнув правой кнопкой мыши папку Program Files и выбрав «Свойства».


Мои попытки найти решение

Моя первая мысль была , что там могут быть какие - то символические ссылки или диск-отображение материала для компании кодирования программного обеспечения или антивирусной программы или что - то, так что я проверил страницу man для du Я нашел следующие два флага, которые, как я думал, могут помочь.

-P, --no-dereference
              don't follow any symbolic links (this is the default)
-x, --one-file-system
              skip directories on different file systems

Однако du -shP /mnt/c/Program\ Files/ , du -shx /mnt/c/Program\ Files/ и даже du -shPx /mnt/c/Program\ Files/ дали мне 2.5T . В этом отношении, то же самое сделал параметр, который должен следовать за символическими ссылками , du -shL . На выходе 2.5T . То же самое для других, возможно, связанных вариантов, которые я пробовал, du -shD и du -shH , дали то же самое - 2.5T для всех.

Моя следующая мысль состояла в том, что, возможно, ярлыки Windows портят вещи, поэтому я постарался исключить их. (Я не знаю, действительно ли этот код предотвращает следующие ярлыки, но я подумал, что стоит попробовать.) Нет кости.

bballdave025@WORK:~$ du -sh --exclude=*.lnk /mnt/c/Program\ Files/
2.5T    /mnt/c/Program Files/

Я мог бы забыть о предрассудках и попробовать что-нибудь из <shudder> Windows Command Line </shudder> или даже стереть мои старые навыки PowerShell . Я думаю, я мог бы даже прикусить пулю и перейти к каждому каталогу в графическом интерфейсе File Explorer , щелкнуть каждую папку, выбрать «Свойства», найти, какой подкаталог занимает больше места, войти в каталог с наибольшим использованием памяти и повторить щелчок по каждой папке. .. [спать] ...

... Однако мне интересно, почему я получаю этот странный результат. Когда я смотрю на Program Files (x86) , я получаю результат, похожий на то, как я кладу себе в рот футбольный мяч (неамериканский). (Еще раз, я говорю с точки зрения соотношения размеров; объем моего рта не связан с моей проблемой.)

bballdave025@WORK:~$ du -sh /mnt/c/Program\ Files\ \(x86\)/
11T     /mnt/c/Program Files (x86)/

(Windows / File Explorer сообщил о размере 22,8 ГБ ... после того, как я подождал 30 секунд.)

Источники и попытки

Из этого ответа суперпользователя у меня появилась идея проверить, что моя ситуация не

Удаленные файлы, вероятно, все еще открыты процессом.

bballdave025@WORK:~$ lsof -a +L1 /mnt/c/Program\ Files/
bballdave025@WORK:~$

Поскольку не было никакого вывода, я предполагаю, что никакие файлы, которые я удалил, все еще не открыты процессом.

Я также посмотрел на этот вопрос и ответ о различных du результатах на Linux и Cygwin. Однако расхождения в размере, описанные в этом вопросе, были крошечными, поэтому я не считаю, что проблема похожа. Хотя я уверен, что

Тогда нет ничего удивительного в том, что один и тот же набор файлов использует диск разного размера [sic] при хранении в разных файловых системах.

Я думаю , что это сюрприз для того же набор файлов , чтобы использовать любого отличающегося размера диска , когда они действительно хранится в одном месте, даже если существует различные базовые способы доступа к ним.

Следующие шаги

Я решил создать папку на моем диске C: , поместить небольшой файл и проверить, что размер файла соответствует ожидаемому.

bballdave025@WORK:~$ mkdir -p /mnt/c/Users/bballdave025/little_guy
bballdave025@WORK:~$ echo "This should make a small file." > /mnt/c/Users/bballdave025/little_guy/small_file.txt
bballdave025@WORK:~$ du -sh /mnt/c/Users/bballdave025/little_guy/small_file.txt
17K     /mnt/c/Users/bballdave025/little_guy/small_file.txt
bballdave025@WORK:~$ du -shPx /mnt/c/Users/bballdave025/little_guy/
17K     /mnt/c/Users/bballdve025/little_guy/

17KB кажется большим для этого маленького текстового файла. Если у нас есть байт на символ, это даст нам 31 байт. Я не знаю, поможет ли это упражнение - создание текстового файла и проверка du - ответить на вопрос, но это было частью моих усилий.

Я застрял. Я действительно не хочу нажимать на папки. Я также хочу знать, почему у меня такое странное поведение. Есть идеи?


Сведения о системе

bballdave025@WORK:~$ uname -a | head -n 1
Linux WORK 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
bballdave025@WORK:~$ bash --version | head -n 1
GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu)
bballdave025@WORK:~$ systeminfo.exe | sed -n 's/^OS\ *//p'
Unable to translate current working directory. Using C:\Windows\System32
Name:                   Microsoft Windows 10 Enterprise
Version:                10.0.15063 N/A Build 15063
Manufacturer:           Microsoft Corporation
Configuration:          Member Workstation
Build Type:             Multiprocessor Free

0