Как удалить слишком большой файл

Обновлено: 07.07.2024

Есть много аспектов, которые необходимо учитывать при работе с нашим компьютером, мы ссылаемся на такие аспекты, как процессор, графика или Оперативная память . Но ко всему этому, особенно при работе с Windows, мы должны добавить дисководы.

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

Это правда, что хотя на данный момент мы можем найти жесткие диски и SSD-накопители большой емкости по хорошей цене, но пространство заканчивается точно так же. На самом деле, в наше время все больше и больше пользователей не хватает места, когда речь идет о хранении всего, что они хотят на своих ПК. Это становится особенно очевидным, если мы интенсивно используем Интернет загрузки, например. Кроме того, мультимедийный контент, такой как фотографии или видео, становится все более высокого качества, поэтому он занимает больше места, чем раньше. Это то, что многие из вас наверняка видели из первых рук при загрузке фотографий и видео, которые мы держим на вашем мобильный , Например.

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

Как управлять дисковым пространством

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

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

Таким образом, из-за все более распространенного предположения о том, что нам не хватает места, установка новых приложений ухудшит ситуацию. Вот почему мы можем искать эти большие файлы из Windows 10 File Explorer сам. Таким образом, у нас будет возможность найти те, которые занимают больше места в Дисковый привод , При этом мы достигаем того, чтобы освободить как можно больше места на этих устройствах, в принципе, без использования сторонних приложений.

Удалить большие файлы из Проводника

На этом этапе, чтобы добиться того, что мы обсуждали, первое, что мы сделаем, это откроем окно проводника Windows. Это можно сделать, например, с помощью Win + E комбинация клавиш.

Проводник Windows

Затем мы должны найти себя на диске или диске, где мы хотим найти те большие файлы, о которых мы здесь говорим. Вы должны знать, что сам Explorer позволяет нам фильтровать эти поиски, давайте посмотрим, как это сделать. Сначала мы можем нажать на поле поиска этой функции. Затем, как только вы ввели поисковый запрос, который хотите выполнить, нажмите на дату рядом с размер раздел. Тогда мы уже можем выбирать между любым из вариантов, которые появляются здесь. В частности, мы собираемся найти Крошечный, Маленький, Средний или Не указано.

Другой вариант, который мы можем использовать, это нажать на поле поиска. Затем в пределах Поиск На вкладке, которая отображается в верхней части проводника, в разделе «Размер» отображается раскрывающийся список, в котором можно выбрать параметры «Пустой», «Маленький», «Маленький», «Средний», «Большой», «Огромный» или «Гигантский». Таким образом, мы сможем уточнить поиск по размеру, который мы хотим, в зависимости от потребностей каждого случая.

Но мы также можем пойти дальше в этом отношении, указав размер вручную. Для этого мы просто указываем размер термина, а затем условие фильтрации, которое мы хотим применить. Чтобы дать вам представление о том, о чем мы говорим, если, например, мы хотим найти файлы размером более 600 мегабайт, нам нужно будет указать размер:> 600 МБ. В тот момент Windows Исследователь Сам отфильтрует все файлы и покажет нам только те, которые занимают более 600 мегабайт.

Найти большой контент из настроек

Еще один эффективный способ, который мы можем использовать для поиска папок, файлов и приложений, которые занимают больше всего места в Windows, - это Настройки. Мы получаем доступ к этому разделу из Win + I комбинация клавиш. Затем мы находимся в разделе «Система / Хранилище», и однажды здесь мы увидим экран с различными вариантами. Здесь нас интересует тот, который указывает пространство, занимаемое в C :.

Поэтому здесь мы находим несколько групп, которые перечисляют пространство, которое вы потребляете на диске. Среди них мы находим рабочий стол Приложения и функции, Временные файлы и т. д. Скажите, что для просмотра дополнительной информации о конкретной категории мы всегда можем нажать на нее. Например, если мы хотим увидеть, какие установленные приложения используют больше всего места, мы можем нажать на упомянутые приложения и характеристики.

Откроется этот раздел, в котором перечислены все установленные приложения и объем используемого дискового пространства. Таким образом, мы можем получить представление о том, что это не занимает много времени и что мы не можем использовать. Мы также должны помнить, что каждая из других категорий выводит нас на разные экраны, в зависимости от того, что мы выбираем. Например, при выборе других данных такие категории as Фотографии , он перенесет нас в папку «Системные образы», ​​чтобы мы могли увидеть, что она занимает в целом.

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

Временные файлы

Управление большими файлами с помощью сторонних приложений

TreeSize

Все, что мы покажем вам, - это возможность управлять этими большими файлами на дисках, Windows сам. Но у нас также есть возможность использовать внешние приложения для всего этого, как в случае TreeSize. Это очень полезное мощное решение для всего этого, которое позволяет нам сразу увидеть файлы и папки, которые используют наиболее пространство , Мы можем скачать его с эту ссылку .

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

Treesize интерфаз

WinDirStat


Точно так же это дает нам возможность быстро определить количество занимаемого нами пространства в зависимости от типа файла. Таким образом, мы можем найти видео or фотографии которые занимают большинство в Windows почти сразу.

Что делать, если файл слишком велик для конечной файловой системы

Файл слишком велик для конечной файловой системы — ошибка

Если вам не важна файловая система накопителя

В случае, если файловая система флешки или диска для вас не принципиальна, вы можете просто отформатировать его в NTFS (данные будут потеряны, способ без потери данных описан далее).

Форматирование в NTFS для больших файлов

  1. В проводнике Windows нажмите правой кнопкой мыши по накопителю, выберите пункт «Форматировать».
  2. Укажите файловую систему NTFS.
  3. Нажмите «Начать» и дождитесь завершения форматирования.

После того, как диск будет иметь файловую систему NTFS, ваш файл на него «поместится».

В том случае, когда нужно конвертировать накопитель из FAT32 в NTFS без потери данных, можно использовать сторонние программы (бесплатная Aomei Partition Assistant Standard умеет это и на русском языке) или использовать командную строку:

convert D: /fs:ntfs (где D — буква конвертируемого диска)

И уже после конвертирования скопировать необходимые файлы.

Если флешка или диск используется для ТВ или другого устройства, которое не «видит» NTFS

В ситуации, когда вы получаете ошибку «Файл слишком велик для конечной файловой системы» при копировании фильма или другого файла на флешку, используемую на устройстве (ТВ, iPhone и т.п.), которое не работает с NTFS, есть два способа решить проблему:

  1. Если это возможно (для фильмов обычно возможно), отыскать другой вариант этого же файла, который будет «весить» меньше 4 Гб.
  2. Попробовать отформатировать накопитель в ExFAT, с большой вероятностью он будет работать на вашем устройстве, а ограничения на размер файла не будет (точнее будет, но не то, с которым вы сможете столкнуться).

Когда требуется создать загрузочную флешку UEFI, а образ содержит файлы больше 4 Гб

Как правило, при создании загрузочных флешек для систем UEFI используется файловая система FAT32 и нередко случается, что не удается записать файлы образа на флешку, если он содержит install.wim или install.esd (если речь о Windows) более 4 Гб.

Решить это можно следующими методами:

  1. Rufus умеет записывать флешки UEFI в NTFS (подробнее: загрузочная флешка в Rufus 3), но потребуется отключить Secure Boot. умеет разбивать файлы больше 4 Гб на файловой системе FAT32 и «собирать» их уже при установке. Функция заявлена в версии 1.6 beta Сохранилось ли она в более новых версиях — не скажу, но с официального сайта можно загрузить именно указанную версию.

Если нужно сохранить файловую систему FAT32, но записать файл на накопитель

В случае, когда нельзя выполнить никаких действий по преобразованию файловой системы (накопитель нужно оставить в FAT32), файл требуется записать и это не видео, которое можно было бы найти в меньшем размере, вы можете разбить этот файл с помощью любого архиватора, например, WinRAR, 7-Zip, создав многотомный архив (т.е. файл будет разбит на несколько архивов, которые после распаковки снова станут одним файлом).

Более того, в 7-Zip можно и просто разбить файл на части, без архивации, а в дальнейшем, когда это будет необходимо, соединить их в один исходный файл.

Разбить большой файл в 7-Zip

Надеюсь, предложенные способы подойдут в вашем случае. Если же нет — опишите ситуацию в комментарии, я постараюсь помочь.



Феерическая расстановка точек над i в вопросе удаления файлов из переполненной директории.

Прочитал статью Необычное переполнение жесткого диска или как удалить миллионы файлов из одной папки и очень удивился. Неужели в стандартном инструментарии Linux нет простых средств для работы с переполненными директориями и необходимо прибегать к столь низкоуровневым способам, как вызов getdents() напрямую.

Для тех, кто не в курсе проблемы, краткое описание: если вы случайно создали в одной директории огромное количество файлов без иерархии — т.е. от 5 млн файлов, лежащих в одной единственной плоской директории, то быстро удалить их не получится. Кроме того, не все утилиты в linux могут это сделать в принципе — либо будут сильно нагружать процессор/HDD, либо займут очень много памяти.

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

Подготовка

Так как создавать переполненную директорию на своём HDD рабочего компьютера, потом мучиться с её удалением ну никак не хочется, создадим виртуальную ФС в отдельном файле и примонтируем её через loop-устройство. К счастью, в Linux с этим всё просто.

Создаём пустой файл размером 200Гб

Многие советуют использовать для этого утилиту dd, например dd if=/dev/zero of=disk-image bs=1M count=1M , но это работает несравнимо медленнее, а результат, как я понимаю, одинаковый.

Форматируем файл в ext4 и монтируем его как файловую систему

К сожалению, я узнал об опции -N команды mkfs.ext4 уже после экспериментов. Она позволяет увеличить лимит на количество inode на FS, не увеличивая размер файла образа. Но, с другой стороны, стандартные настройки — ближе к реальным условиям.

Создаем множество пустых файлов (будет работать несколько часов)

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

Проверяем, что все айноды на ФС исчерпаны.

Размер файла директории

Теперь попробуем удалить эту директорию со всем её содержимым различными способами.

Тесты

После каждого теста сбрасываем кеш файловой системы
sudo sh -c 'sync && echo 1 > /proc/sys/vm/drop_caches'
для того чтобы не занять быстро всю память и сравнивать скорость удаления в одинаковых условиях.

Удаление через rm -r

$ rm -r /mnt/test_dir/
Под strace несколько раз подряд (. ) вызывает getdents() , затем очень много вызывает unlinkat() и так в цикле. Занял 30Мб RAM, не растет.
Удаляет содержимое успешно.

Т.е. удалять переполненные директории с помощью rm -r /путь/до/директории вполне нормально.

Удаление через rm ./*

$ rm /mnt/test_dir/*
Запускает дочерний процесс шелла, который дорос до 600Мб, прибил по ^C . Ничего не удалил.
Очевидно, что glob по звёздочке обрабатывается самим шеллом, накапливается в памяти и передается команде rm после того как считается директория целиком.

Удаление через find -exec

$ find /mnt/test_dir/ -type f -exec rm -v <> \;
Под strace вызывает только getdents() . процесс find вырос до 600Мб, прибил по ^C . Ничего не удалил.
find действует так же, как и * в шелле — сперва строит полный список в памяти.

Удаление через find -delete

$ find /mnt/test_dir/ -type f -delete
Вырос до 600Мб, прибил по ^C . Ничего не удалил.
Аналогично предыдущей команде. И это крайне удивительно! На эту команду я возлагал надежду изначально.

Удаление через ls -f и xargs

$ cd /mnt/test_dir/ ; ls -f . | xargs -n 100 rm
параметр -f говорит, что не нужно сортировать список файлов.
Создает такую иерархию процессов:

Удаление через perl readdir

$ perl -e 'chdir "/mnt/test_dir/" or die; opendir D, "."; while ($n = readdir D) < unlink $n >' (взял здесь)
Под strace один раз вызывает getdents() , потом много раз unlink() и так в цикле. Занял 380Кб памяти, не растет.
Удаляет успешно.

Получается, что использование readdir вполне возможно?

Удаление через программу на C readdir + unlink

$ gcc -o cleandir cleandir.c
$ ./cleandir
Под strace один раз вызывает getdents() , потом много раз unlink() и так в цикле. Занял 128Кб памяти, не растет.
Удаляет успешно.

Опять — же, убеждаемся, что использовать readdir — вполне нормально, если не накапливать результаты в памяти, а удалять файлы сразу.



Феерическая расстановка точек над i в вопросе удаления файлов из переполненной директории.

Прочитал статью Необычное переполнение жесткого диска или как удалить миллионы файлов из одной папки и очень удивился. Неужели в стандартном инструментарии Linux нет простых средств для работы с переполненными директориями и необходимо прибегать к столь низкоуровневым способам, как вызов getdents() напрямую.

Для тех, кто не в курсе проблемы, краткое описание: если вы случайно создали в одной директории огромное количество файлов без иерархии — т.е. от 5 млн файлов, лежащих в одной единственной плоской директории, то быстро удалить их не получится. Кроме того, не все утилиты в linux могут это сделать в принципе — либо будут сильно нагружать процессор/HDD, либо займут очень много памяти.

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

Подготовка

Так как создавать переполненную директорию на своём HDD рабочего компьютера, потом мучиться с её удалением ну никак не хочется, создадим виртуальную ФС в отдельном файле и примонтируем её через loop-устройство. К счастью, в Linux с этим всё просто.

Создаём пустой файл размером 200Гб

Многие советуют использовать для этого утилиту dd, например dd if=/dev/zero of=disk-image bs=1M count=1M , но это работает несравнимо медленнее, а результат, как я понимаю, одинаковый.

Форматируем файл в ext4 и монтируем его как файловую систему

К сожалению, я узнал об опции -N команды mkfs.ext4 уже после экспериментов. Она позволяет увеличить лимит на количество inode на FS, не увеличивая размер файла образа. Но, с другой стороны, стандартные настройки — ближе к реальным условиям.

Создаем множество пустых файлов (будет работать несколько часов)

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

Проверяем, что все айноды на ФС исчерпаны.

Размер файла директории

Теперь попробуем удалить эту директорию со всем её содержимым различными способами.

Тесты

После каждого теста сбрасываем кеш файловой системы
sudo sh -c 'sync && echo 1 > /proc/sys/vm/drop_caches'
для того чтобы не занять быстро всю память и сравнивать скорость удаления в одинаковых условиях.

Удаление через rm -r

$ rm -r /mnt/test_dir/
Под strace несколько раз подряд (. ) вызывает getdents() , затем очень много вызывает unlinkat() и так в цикле. Занял 30Мб RAM, не растет.
Удаляет содержимое успешно.

Т.е. удалять переполненные директории с помощью rm -r /путь/до/директории вполне нормально.

Удаление через rm ./*

$ rm /mnt/test_dir/*
Запускает дочерний процесс шелла, который дорос до 600Мб, прибил по ^C . Ничего не удалил.
Очевидно, что glob по звёздочке обрабатывается самим шеллом, накапливается в памяти и передается команде rm после того как считается директория целиком.

Удаление через find -exec

$ find /mnt/test_dir/ -type f -exec rm -v <> \;
Под strace вызывает только getdents() . процесс find вырос до 600Мб, прибил по ^C . Ничего не удалил.
find действует так же, как и * в шелле — сперва строит полный список в памяти.

Удаление через find -delete

$ find /mnt/test_dir/ -type f -delete
Вырос до 600Мб, прибил по ^C . Ничего не удалил.
Аналогично предыдущей команде. И это крайне удивительно! На эту команду я возлагал надежду изначально.

Удаление через ls -f и xargs

$ cd /mnt/test_dir/ ; ls -f . | xargs -n 100 rm
параметр -f говорит, что не нужно сортировать список файлов.
Создает такую иерархию процессов:

Удаление через perl readdir

$ perl -e 'chdir "/mnt/test_dir/" or die; opendir D, "."; while ($n = readdir D) < unlink $n >' (взял здесь)
Под strace один раз вызывает getdents() , потом много раз unlink() и так в цикле. Занял 380Кб памяти, не растет.
Удаляет успешно.

Получается, что использование readdir вполне возможно?

Удаление через программу на C readdir + unlink

$ gcc -o cleandir cleandir.c
$ ./cleandir
Под strace один раз вызывает getdents() , потом много раз unlink() и так в цикле. Занял 128Кб памяти, не растет.
Удаляет успешно.

Опять — же, убеждаемся, что использовать readdir — вполне нормально, если не накапливать результаты в памяти, а удалять файлы сразу.

Читайте также: