Нельзя удалять чужие файлы
Проверка защиты от записи
Прежде чем приступать к каким-то радикальным методам, следует убедиться в том, что вы имеете право удалять файлы. Если они расположены на флешках или картах памяти, то начать надо с самого простого – убедиться, что механический переключатель, который предотвращает запись/стирание, не установлен в соответствующее положение, блокирующее выполнение подобных действий.
Удаление папки
Для удаления папки целиком используется другая команда:
/S – удаление вложенных папок и файлов.
/Q — не выдавать запрос на подтверждение операции удаления.
Пример показан следующем скриншоте.
Проверка на вирусы
Файл может оказаться вирусом, той или иной вредоносной программой, или ее частью, удалить которую не удается. Если давно не было проведено сканирование компьютера на вирусы, следует сделать это. Если были найдены и обезврежены подозрительные программы, надо попробовать удалить этот файл.
Почему файл или папка не удаляются
Немного справочной информации с сайта Microsoft, если кому-нибудь интересно. Хотя, информация довольно скудная. Также может быть полезным: Как очистить диск от ненужных файлов.
Что может мешать удалению файла или папки
Если у вас нет необходимых прав в системе для изменения файла или папки, вы не можете удалить их. Если вы не создавали файл, то есть вероятность, что вы не можете и удалить его. Также причиной могут служить настройки, сделанные администратором компьютера.
Также файл или папку его содержащую нельзя удалить, если в настоящий момент файл открыт в программе. Можно попробовать закрыть все программы и попробовать еще раз.
Использование DeadLock для разблокирования и удаления файлов
Проверка доступа к файлу
Помогающий в некоторых случаях способ удалить файл – перезагрузка компьютера. Вполне возможно, что тот объект, от которого необходимо избавиться – результат работы той или иной программы, которая была деинсталлирована некорректно, или это было выполнено не полностью, и в системе остались какие-то программные модули (DLL, процессы), которые все еще работают и не позволяют выполнить удаление. Вполне возможно, что после перезапуска системы ненужные процессы работать не будут и файл освободится от излишней опеки. Удаляйте.
Другой момент – запрет на выполнение операций записи/стирания в данной папке, установленный администратором компьютера. Необходимо зайти в свойства папки, и на вкладке «Безопасность» проверить выданные права.
Если разрешено только чтение, то следует дать полный доступ к данной папке, после чего возможно будет производить любые действия со всеми файлами, в ней находящимися. Следует быть особенно аккуратным с системными папками.
Использование «Диспетчера задач»
Для этого достаточно просто закрыть эту программу (если есть такая возможность), либо остановить выполняющийся процесс. Для этого понадобиться открыть «Диспетчер задач», что можно сделать нажатием комбинации клавиш «Ctrl»+«Shift»+«Esc». После этого на вкладке «Процессы» надо найти блокирующий доступ к файлу процесс и завершить его.
После этого файл можно попробовать удалить. Скорее всего, это получится.
Удаление файла без дополнительных программ
Файл уже используется. Закройте файл и повторите попытку.
Это легко сделать — запустите диспетчер задач:
Найдите процесс, использующий файл, который нужно удалить и снимите задачу. Удалите файл. Если файл занят процессом explorer.exe, то перед тем, как снять задачу в диспетчере задач, запустите командную строку от имени администратора и, уже после того, как снимите задачу, используйте в командной строке команду del полный_путь_к_файлу, чтобы удалить его.
Чтобы после этого вернуть стандартный вид рабочего стола, нужно снова запустить explorer.exe, для этого в диспетчере задач выберите «Файл» — «Новая задача» — «explorer.exe».
Причины, из-за которых папка или файл не удаляются
Невозможность удаления файла может быть объяснена несколькими причинами:
- Недостаточно прав на выполнение операции удаления.
- Файл используется другим пользователем или программой.
- Папка или файл повреждены.
- На носителе, на котором расположен интересующий файл, установлена защита от записи, а, значит, и от удаления.
Решить возникшую проблему можно разными способами: воспользоваться возможностями, которые есть в операционной системе, либо прибегнуть к помощи сторонних утилит, которые и предназначены для выполнения подобных действий. Рассмотрим все методы избавления от ненужных файлов.
Следует только сделать одну оговорку – вы уверены, что предназначенный для удаления файл действительно ненужный? ОС Windows защищает папки и файлы, необходимые для ее стабильного функционирования, и попытки настоять на своем могут привести к «падению» системы и необходимости решать уже совсем другие задачи. Прежде, чем приступать к удалению файлов, убедитесь, что это действительно «мусор». Особенно аккуратным следует быть при избавлении от объектов в системных папках.
Использование безопасного режима
Если остановить блокирующий доступ к файлу процесс не удается по тем или иным причинам, или непонятно, какой же процесс мешает, то может помочь этот способ, при котором система загружается в безопасном режиме. При этом стартует необходимый минимум процессов, и тот, который «держал» файл, останется в неактивированном состоянии. Можно попробовать удалить файл.
Удаление файла
Используется команда «Del». Надо ввести строку:
/F – принудительное удаление файлов, помеченных как доступные только для чтения.
/Q – не выдавать запрос на подтверждение операции удаления.
/S – удаление вложенных папок и файлов в них.
На скриншоте показан пример. Естественно, путь у вас будет другой.
Удаление заблокированного файла с помощью загрузочной флешки или диска
Еще один способ удалить подобный файл — загрузиться с любого накопителя LiveCD, с диска реанимации системы или загрузочной флешки Windows. При использовании LiveCD в любых его вариантах вы сможете воспользоваться либо стандартным графическим интерфейсом Windows (например, в BartPE) и Linux (Ubuntu), либо же средствами командной строки. Обратите внимание, что при загрузке с подобного накопителя, жесткие диски компьютера могут оказаться под другими буквами. Чтобы убедиться, что вы удаляете файл с нужного диска, можно использовать команду dir c: (этот пример отобразит список папок на диске C).
При использовании загрузочной флешки или установочного диска Windows 7 и Windows 8, в любой момент установки (после того, как уже загрузится окно выбора языка и на следующих этапах) нажмите Shift + F10, чтобы войти в командную строку. Также можно выбрать «Восстановление системы», ссылка на которое также присутствует в программе установки. Также, как и в предыдущем случае, обратите внимание на возможное изменение букв дисков.
Другие программы
Помимо перечисленных есть и другие утилиты, выполняющие ту же работу. Как пример, можно привести: Delete Doctor, Free File Unlocker, MoveOnBoot, Tizer UnLocker, Wize Force Deleter. Принцип действия у них схож, поэтому, выбирать можно ту, которая понравилась и которая помогла решить проблемы с неудаляемыми файлами или папками.
Использование командной строки
Для того, чтобы воспользоваться этим средством, нужно запустить командную строку, для чего после нажатия кнопки «Пуск» в поле поиска ввести «cmd», нажать правую кнопку мыши и выбрать режим запуска с административными правами. Откроется окно, в котором следует ввести команды на удаление файла или папки.
Этим способом можно попробовать удалить поврежденный файл.
Дополнительные методы удалить файл или папку при ошибке
Надеюсь, один из вариантов оказался работоспособным в вашей ситуации и ненужное было удалено.
Исправляем проблему «Не удалось найти этот элемент»
Каждый из способов по отдельности может сработать, но какой именно сработает в вашем случае заранее сказать нельзя, а потому начну с самых простых методов удаления (первые 2), а продолжу более хитрыми.
- Откройте папку (расположение элемента, который не удаляется) в проводнике Windows и нажмите клавишу F5 на клавиатуре (обновление содержимого) — иногда уже этого достаточно, файл или папка просто пропадет, так как действительно отсутствует в этом расположении.
- Перезагрузите компьютер (при этом выполните именно перезагрузку, а не завершение работы и включение), а затем проверьте — не исчез ли удаляемый элемент.
- Если у вас есть свободная флешка или карта памяти, попробуйте перенести тот элемент, который «не найден» на неё (перенос можно осуществить в проводнике перетягиванием мышью с удержанием кнопки Shift). Иногда это срабатывает: файл или папка исчезает в том расположении, в котором располагались и появляется на флешке, которую затем можно отформатировать (при этом с неё исчезнут все данные).
- С помощью любого архиватора (WinRAR, 7-Zip и т.д.), добавьте этот файл в архив, при этом в опциях архивирования отметьте «Удалять файлы после сжатия». В свою очередь сам созданный архив удалится без проблем.
- Аналогично, часто не удаляемые файлы и папки легко удаляются в бесплатном архиваторе 7-Zip (он может работать и как простой файловый менеджер, но по какой-то причине у него получается удаление таких элементов).
Как правило, один из 5 описанных способов помогает и использовать программы наподобие Unlocker (которая в рассматриваемой ситуации не всегда эффективна) не приходится. Однако, иногда проблема сохраняется.
Бесплатная программа Unlocker для разблокировки файлов, которые не удаляются
Использование программы очень простое — после установки, просто кликните правой кнопкой мыши по файлу, которые не удаляется и выберите в контекстном меню пункт «Unlocker». В случае использования portable версии программы, которая также доступна для загрузки, запустите программу, откроется окно для выбора файла или папки, которые требуется удалить.
Суть работы программы та же самая, что и в первом описанном способе — выгрузка из памяти процессов, которыми занят файл. Основные преимущества перед первым способом — с помощью программы Unlocker файл удалить проще и, более того, она может найти и завершить процесс, который скрыт от глаз пользователей, то есть недоступен для просмотра через диспетчер задач.
Обновление 2017: Еще один способ, судя по отзывам, успешно срабатывающий, был предложен в комментариях автором Тоха Айтишник: устанавливаете и открываете архиватор 7-Zip (бесплатный, работает также как файловый менеджер) и в нем переименовываете файл, который не удаляется. После этого удаление проходит успешно.
После удаления всех файлов остается пустая папка
В данном случае попробуйте закрыть все открытые программы или перезагрузить компьютер, а после этого удалить папку.
Заключение
Чем удалить файлы или папки, какой способ выбрать – все зависит от конкретной ситуации. Кто-то предпочитает использовать специализированный «софт», кто-то не любит захламлять систему множеством узкоспециальных утилит и предпочитает использовать все встроенные возможности ОС.
Главное – иметь представление о разных способах решения проблем и умение их применять на практике. Надеемся, что как минимум один из предложенных нами способов вам помог.
Здравствуйте, как можно помощью chmod запретить удаление и редактирование файлов в папке, но при этом оставить возможность загружать новые файлы всем пользователям?
chmod тут не помощник: если есть права на запись в директорию, то от удаления не спасёт даже chmod 000.
Вам может помочь chattr +i на файл. Тогда даже рут не сможет удалить файл, пока не снимет этот аттрибут (chattr -i).
Если речь об FTP копайте в настройках сервера. Возможно там будет интересующая вас опция по запрету удаления. Ну или найдется «стандартное» решение в документации.
Ну изначально я планировал сделать одну команду в консоли, интересно что это посчитали большим велосипедом чем писать новый редактор и файловый менеджер или лепить костыли к старому.
хм, в windows это очень легко делается, простыми настройками прав доступа как папке.
неужели в линксе так сложно?
На самом деле если я имею право писать в файл, то запрет на его удаление это фейк. Я просто затру его нулями. Поэтому такого нет в стнадартных RWX правах. А вообще липкий бит.
Затереть то затрете, но вот удалить файл и права на доступ к этому файлу — не сможете. А значит кто-нибудь другой у кого есть права на запись в этот файл, но нет прав на запись в директорию сможет что-нибудь записать в этот файл.
chmod a+t на директорию спасут от удаления файла, загруженного другим пользователем (chattr +i не на всех ФС работает, в reiserfs, например, такого нет). Однако, если у файла будут права 666, все смогут поменять содержимое файла (хоть и не смогут удалить).
Сначала смените владельца для этих файлов через chown (например, на root'a). А затем поставьте на них chmod 744. Должно помочь
Если не верите мне — попробуйте:
Посмотрите мануал по chmod, и как организована /tmp. Там есть какой-то флаг, который ставится на папку и разрешает удалять файлы только владельцу файла.
Т.е. права на папку /tmp к примеру содержат write для всех, но благодаря какому-то флагу при этом удалять чужие файлы нельзя.
Если речь о FTP, то это можно сделать на proftpd. Лимиты можно выставить на любую команду ftp для любого пользователя. Делал такую конфигурацию. Пользователи выкладывали файлы на ftp для рассмотрения модератором. После записи файла ничего с ним сделать нельзя. Конфигурационный файл потерялся годы назад, но там было несложно. Вот Тут, все команды FTP Тут.
Нам необходимо сделать так, что бы клиент не смог удалить каталог inboundб но смог удалять файлы из него.
предлагаю следующее:
Скорей всего, матерым системным администраторам статья будет не очень интересна. В первую очередь она ориентирована на новичков, а также на людей, которые столкнулись с подобной проблемой — необходимостью удалить огромное количество файлов из одной папки в ОС Linux (Debian в моем случае), а также с закончившимся местом на диске, когда df -h выдает что почти 30% свободно.
Начало
Ничто не предвещало беды.
Сервер с сайтом работал без никаких проблем уже больше года (uptime почти 500 дней), не было никаких проблем, и я с чистой душой спокойно ушел в отпуск.
В первый же день отпуска мне звонят с жалобой — сайт недоступен. MySQL падает с ошибкой Error 28 «No space left on device».
Казалось бы, проблема банальна — кончилось место на диске. Правда, df -h показывает, что на диске имеется вполне достаточное количество свободного места, ну да я же в отпуске, разбираться лень — посоветовал им поискать на диске ненужные файлы (старые бекапы и т.д.) и их удалить. Удалили, вроде все заработало.
Прошла пара часов и проблема вернулась. Странно — свободное место на жестком диске за это время практически не уменьшилось. После беглого гугления обнаружился топик на serverfault, в котором говорится, что проблема может возникнуть также из-за того, что кончилось не место на диске, а айноды!
Ввожу в консоль df -i — и оказывается действительно, айноды у меня закончились.
Проблема
Начал искать, где же у меня находится столько файлов на жестком диске, что они сожрали все айноды (а айнодов у меня на 500-гигабайтном жестком диске больше 30 миллионов).
И нашел — оказалось, проблема была в папке с сессиями php.
Видимо, по какой-то причине сломался механизм автоочистки этой папки, что привело к тому, что в ней скопилось огромное количество файлов. Насколько огромное — сказать сложно, потому что никакие стандартные команды линукс, такие, как ls, find, rm и т.д. — с этой папкой не работают. Просто виснут, заодно подвешивая весь сервер. Могу только сказать, что сам файл директории стал весит около гигабайта, а также что файлов там точно более полумиллиона, потому что столько я оттуда уже удалил.
Решение
Решение очевидное — надо удалить все эти файлы сессий. При этом желательно, чтобы сервер продолжал работать в штатном режиме. Для начала я переименовал папку сессий, в которой лежит куча файлов, а вместо нее создал пустую — чтобы спокойно из старой (переименованной) удалять все файлы, и чтобы это не мешало созданию новых файлов сессий.
Также в крон добавил автоматическое удаление файлов сессий старше одного часа, чтобы проблема больше не повторилась.
И перешел к основной проблеме — очистке жесткого диска.
Попробовал решение «в лоб»:
Сервер повис, ничего не удалилось
Попробовал известный способ для удаления большого числа файлов
Ничего, сервер виснет, файлы не удаляются.
А теперь что самое интересное — файловый менеджер mc достаточно успешно справлялся с задачей удаления этих файлов! То есть, когда запускаешь удаление папки — файлы удаляются, mc не виснет. Удаление идет со скоростью примерно 5 000 файлов в минуту, правда при этом создается огромная нагрузка на жесткий диск, что приводит к неработоспособности сервера.
А хотелось бы, чтобы эти файлы постепенно удалялись в фоновом режиме, и не мешали нормальной работе сайта.
Собственно, решение опять нашлось в гугле — Olark делится способом, как он отобразил список из 8 миллионов файлов в 1 папке, используя системный вызов getdents
Здесь находится документация по функции getdents, а также пример кода, который ее использует.
Правда, этот пример мне не совсем подошел — даже если ставить большой размер буфера, как советует Olark в своем блоге, все равно сервер виснет при попытке прочитать всю папку разом.
Опытным путем подобрал размер буфера в 30 килобайт, который позволяет считать около 550 названий файлов из директории, при этом не подвешивая сервер и не создавая излишней нагрузки на диск. А также немного переписал код примера, чтобы вместо отображения имени файла он его удалял.
В итоге у меня получился такой код:
Код компиллируется обычным gcc
И просто запускается из командной строки:
Получившийся файл я поставил в крон и теперь у меня удаляется по 547 файлов в минуту, при этом нагрузка на сервер в пределах нормы — и я надеюсь, в течение недели-другой все файлы все-таки удалятся.
Частая проблема, с которой сталкиваются начинающие пользователи — не удаляется файл или папка (из-за какого-то файла), который нужно-таки удалить. При этом, система пишет файл занят другим процессом или действие не может быть выполнено, так как этот файл открыт в Название_программы или о том, что нужно запросить разрешение у кого-то. С этим можно столкнуться в любой версии ОС — Windows 7, 8, Windows 10 или XP.
На самом деле, есть сразу несколько способов удалить такие файлы, каждый из которых и будет здесь рассмотрен. Посмотрим, как удалить не удаляющийся файл, не используя сторонние средства, а затем опишу удаление занятых файлов с помощью LiveCD и бесплатной программы Unlocker. Отмечу, что удаление таких файлов не всегда безопасно. Будьте внимательны, чтобы это не оказался файл системы (особенно когда вам сообщают, что нужно разрешение от TrustedInstaller). См. также: Как удалить файл или папку, если пишет Элемент не найден (не удалось найти этот элемент).
Также, если не удаляются файлы pagefile.sys и swapfile.sys, hiberfil.sys то способы ниже не помогут. Вам пригодятся инструкции про Файл подкачки Windows (первые два файла) или про отключение гибернации. Аналогично, может быть полезна отдельная статья про то, как удалить папку Windows.old.
Unlocker
Пожалуй, известнейшая программа, известная давно и используемая часто. Найти ее можно по этой ссылке, где есть нужные версии под 32-х и 64-х разрядные ОС. Есть и портативная версия для тех, кто не любит устанавливать много программ в систему, а предпочитает запускать нужные средства для обслуживания системы автономно.
В использовании портативных версий есть еще одно преимущество: при инсталляции подобных программ часто «паровозом» инсталлируются еще несколько утилит, расширений к браузерам и т. п., которые вам совсем не нужны, которые буду досаждать рекламой, и от которых, порой, не совсем просто избавиться. Приходится быть внимательным при установке подобного софта. Как правило, с портативными версиями такого не происходит.
Сама программа предельно проста. При запуске откроется окно, где необходимо указать расположение файла, который необходимо удалить.
Надо только нажать кнопку «Ок», после чего появится новое окно, в котором нужно будет подтвердить действие, которое надо выполнить над файлом. Если никаких блокировок файла не найдено, то появится окно:
Надо указать, что делать с файлом – удалить, оставить как есть, перенести и т. п.
Использование загрузочного диска
Случается, что даже безопасный режим не позволяет избавиться от ненужной папки или файла. Тогда может помочь загрузка с внешнего загрузочного диска. Как вариант – жесткий диск, на котором необходимо произвести удаление файлов, можно подключить к другому компьютеру. Тогда, загрузившись с другого носителя, ваш диск будет подключен в качестве второго (третьего и т. д.) диска, ОС на котором будет не запущена. Теперь остается только найти нужный файл и удалить его.
Почему, когда я пробую удалить файл, Windows пишет, что файл используется
Использование сторонних программ
Для того чтобы решить все проблемы с доступом к файлам и иметь возможность их удалить вне зависимости от того, используются они или нет, существует ряд утилит, как раз и предназначенных для разблокировки подлежащих уничтожению объектов.
FileASSASSIN
Бесплатная утилита, скачать которую можно по ссылке. Среди достоинств программы – простой интерфейс, возможность запуска из командной строки, разблокировка и (если указан такой режим) удаление файла.
Чтобы избавиться от ненужного файла, надо указать путь к нему, отметить галочкой пункт «Delete file» и нажать кнопку «Execute». Это все, что необходимо сделать. Если работать с командной строкой вы не хотите, а также не хотите копаться в процессах и запущенных программах, то данный способ – возможность быстро и эффективно решить все проблемы с заблокированными файлами.
Читайте также: