Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 4.00
VoltDeMar
16 / 16 / 0
Регистрация: 05.06.2012
Сообщений: 1,015
#1

Удаление файлов: типы и способы - C++

14.07.2015, 11:07. Просмотров 485. Ответов 13
Метки нет (Все метки)

Здравствуйте.
Подозреваю что существует несколько методов удаления файлов. Удаление без изменения области памяти в которой хранилось что то (до записи нового файла на это место) и удаление с перезаписью.
Подскажите так ли это? Существуют только такие методы удаления? Что из себя представляет удаление без перезаписи (какие именно действия производит ОС?)? Существуют ли API для "полного удаления" ? Как реализуется на уровне программиста?

Посоветуйте литературу по этому поводу.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2015, 11:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление файлов: типы и способы (C++):

Удаление некоторых файлов с диска - C++
Возникла такая задача - есть сервак с ~ 50 Т всякого рода медиа-файлов (.vob (в этом случае может быть папка VIDEO_TS), .avi, .mp3, .flv...

Какие спобосы и типы файлов бывают для подключения дополнительных компонентов? - C++ Builder
Какие спобосы и типы файлов бывают для подключения дополнительных компонентов, если можно то по подробнее

удаление файлов - C++ Builder
Помогите написать программу в которорой задается имя каталога и тип файлов, подлежащих удалению. вот пытался так удалить но у меня не...

Програмное удаление файлов - C++ Builder
Подскажите пожалуйста как програмно удалить файлы определенного формата в определенной папке

Удаление файлов по маске - C++ Builder
Вот есть код который { AnsiString DirPath = Edit1->Text; TStringList* ToDel = new TStringList(); ...

Удаление пустых файлов - C++ Builder
Доброго времени суток . Очень не стандартная ситуация Цель программы - удалить с папки файлы которые 0 байт Все просто и с этой...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
14.07.2015, 12:00 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Подозреваю что существует несколько методов удаления файлов.
И да, и нет. Операционная система предоставляет только один, самый простейший способ. Для остального надо проделывать вещи, предназначенные по сути для других целей. Например, просто перезаписать содержимое файла перед удалением.
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Что из себя представляет удаление без перезаписи (какие именно действия производит ОС?)?
Если с упрощениями, то директория (папка) представляет из себя список записей о содержащихся в ней файлах. ОС помечает соответствующую запись как удалённую.
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Существуют ли API для "полного удаления" ?
Нет, но существуют API для других вещей - записи в файл или дефрагментации.

Цитата Сообщение от VoltDeMar Посмотреть сообщение
Посоветуйте литературу по этому поводу.
Windows Internals за авторством Марка Руссиновича.
1
VoltDeMar
16 / 16 / 0
Регистрация: 05.06.2012
Сообщений: 1,015
14.07.2015, 12:40  [ТС] #3
Т.е. удаление как таковое не существует ? Память всегда содержит какие то значения?
Если так возможно ли восстановить исходные значения после перезаписи?

Добавлено через 2 минуты
Цитата Сообщение от Nick Alte Посмотреть сообщение
Windows Internals за авторством Марка Руссиновича.
Книга про Windows ? Хотелось что нибудь обобщающее с примерами для всех ОС и максимально емкое?
0
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
14.07.2015, 15:11 #4
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Т.е. удаление как таковое не существует ? Память всегда содержит какие то значения?
Вопрос в том, какие это значения. Если там, где были реальные данные, теперь сплошь нули, что от них толку?
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Если так возможно ли восстановить исходные значения после перезаписи?
Если не считать легенд о каких-то чудесных технологиях спецслужб (здесь должна быть картинка про CSI), то нет. Если в чашке был сначала налит чай, а теперь там кофе, то чай из этой чашки уже не достанешь.
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Хотелось что нибудь обобщающее с примерами для всех ОС и максимально емкое?
Вот это вряд ли, потому что работа с файлами на низком уровне относится как раз к специфике операционных систем. Для каждой операционной системы (даже хуже: для каждой файловой системы) всё по-разному. Так что и изучать придётся по отдельности. Ну если не считать простейших, но вполне действенных приёмов вроде перезаписи содержимого файла.
1
VoltDeMar
16 / 16 / 0
Регистрация: 05.06.2012
Сообщений: 1,015
15.07.2015, 08:53  [ТС] #5
Цитата Сообщение от Nick Alte Посмотреть сообщение
Если не считать легенд о каких-то чудесных технологиях спецслужб (здесь должна быть картинка про CSI), то нет. Если в чашке был сначала налит чай, а теперь там кофе, то чай из этой чашки уже не достанешь.
При наличии определенных технологий частицы чая можно соскаблить со стенок определить состав и размножить =)

Цитата Сообщение от Nick Alte Посмотреть сообщение
Вот это вряд ли, потому что работа с файлами на низком уровне относится как раз к специфике операционных систем. Для каждой операционной системы (даже хуже: для каждой файловой системы) всё по-разному. Так что и изучать придётся по отдельности. Ну если не считать простейших, но вполне действенных приёмов вроде перезаписи содержимого файла.
Думаю среди разработчиков кросплатформеров должны быть авторы статей и книг.
0
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
15.07.2015, 09:28 #6
Цитата Сообщение от VoltDeMar Посмотреть сообщение
При наличии определенных технологий частицы чая можно соскаблить со стенок определить состав и размножить =)
Но выпить тот чай, который там был, уже всё равно не получится. Если бы старую информацию можно было бы так вот взять и извлечь из-под новой, этим бы пользовались вовсю и у нас были бы вдвое более ёмкие винчестеры за те же деньги.
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Думаю среди разработчиков кросплатформеров должны быть авторы статей и книг.
Эта задача кроссплатформенной не является. Разные файловые системы устроены по-разному, для доступа к диску в разных ОС используются совершенно разные API и обобщать в настолько низкоуровневой задаче попросту нечего. Она полностью платформенно-специфична. Более того, даже при работе с одной и той же ОС и одной и той же файловой системой, но с разными носителями могут быть весьма специфические нюансы (вспомним про flash-носители, SSD и их систему равномерного износа, где перезапись файла будет заполнять не те участки носителя, где располагалось предыдущее содержимое).
1
VoltDeMar
16 / 16 / 0
Регистрация: 05.06.2012
Сообщений: 1,015
15.07.2015, 14:25  [ТС] #7
Цитата Сообщение от Nick Alte Посмотреть сообщение
Эта задача кроссплатформенной не является. Разные файловые системы устроены по-разному, для доступа к диску в разных ОС используются совершенно разные API и обобщать в настолько низкоуровневой задаче попросту нечего. Она полностью платформенно-специфична. Более того, даже при работе с одной и той же ОС и одной и той же файловой системой, но с разными носителями могут быть весьма специфические нюансы (вспомним про flash-носители, SSD и их систему равномерного износа, где перезапись файла будет заполнять не те участки носителя, где располагалось предыдущее содержимое).
Т.е. при определенном уровне знаний просто можно придумать свою файловую систему? Взаимодействие с жестким диском полностью контролируется на уровне ОС, или на аппаратном уровне есть какие то преобразования? При записи через WinAPI используются идентификаторы ОС? а существуют ли идентификаторы в самом жестком диске и есть ли к ним доступ?
0
gng
644 / 490 / 133
Регистрация: 08.09.2013
Сообщений: 1,326
15.07.2015, 15:30 #8
Цитата Сообщение от VoltDeMar Посмотреть сообщение
придумать свою файловую систему?
Можно, но уже существуют ФС, которые при удалении перезаписывают данные нулями. Самая распространенная - xfs.
Есть ещё утилиты безопасного удаления: shred, wipe, srm.
Насчет Венды не знаю, но, наверное, есть что-то подобное
1
Почтальон
Модератор
373 / 296 / 56
Регистрация: 22.03.2015
Сообщений: 2,321
Завершенные тесты: 1
15.07.2015, 16:02 #9
ТС, возьмите любой вузовский учебник по архитектуре ОС, там основные моменты расписаны. На самом деле при удалении файла - удаляется только его адрес из адресного пространства, по крайней мере у винды было так. Т.о. если новые данные не попали на новые адреса, то из можно восстановить
1
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
15.07.2015, 17:07 #10
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Т.е. при определенном уровне знаний просто можно придумать свою файловую систему?
Можно, и если держать её внутри файла (виртуальная файловая система), то уровень этот весьма доступен. Такая задача нередко попадается в вузовских лабораторных и курсовых работах по программированию, насколько мне известно.
Вот только зачем всякие ухищрения и сложности с разными ОС, ФС и хардваре, если, согласно товарищу Альтшуллеру, лучше всего сделать заранее? К примеру, файл можно сразу держать зашифрованным, а если он не больше не нужен, достаточно забыть ключ. И вот это, заметим, как раз очень даже кроссплатформенно.
1
Почтальон
Модератор
373 / 296 / 56
Регистрация: 22.03.2015
Сообщений: 2,321
Завершенные тесты: 1
15.07.2015, 21:32 #11
Цитата Сообщение от Nick Alte Посмотреть сообщение
К примеру, файл можно сразу держать зашифрованным, а если он не больше не нужен, достаточно забыть ключ. И вот это, заметим, как раз очень даже кроссплатформенно.
Немного дополню, с вашего позволения. Такой подход конечно хороший, для шпионов, но для простого юзверя намного проще "откатить" систему и восстановить "удаленные" файлы
1
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
15.07.2015, 21:39 #12
Почтальон, не совсем понял смысл этого наполненного весёлыми лицами комментария.
Даже если у "простого юзверя" по какой-то непонятной причине включена система версионирования защищённых файлов (которая, на минуточку, сохраняет предыдущие версии файла с вытекающим из этого обильным пожиранием места на диске - а оно емунадо?), без ключа содержимое этих файлов будет бесполезно и бессмысленно.
1
Почтальон
Модератор
373 / 296 / 56
Регистрация: 22.03.2015
Сообщений: 2,321
Завершенные тесты: 1
16.07.2015, 09:15 #13
Смысл был в том, что рядовому пользователю по барабану до шифрования и безопасности его данных. Не сочтите за грубость, пожалуйста
1
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
16.07.2015, 11:31 #14
Цитата Сообщение от Почтальон Посмотреть сообщение
Смысл был в том, что рядовому пользователю по барабану до шифрования и безопасности его данных.
Так мы тут и разговариваем не с ним, а с человеком, которому тема безопасности изначально небезразлична, раз уж он задался вопросом надёжного стирания файлов.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2015, 11:31
Привет! Вот еще темы с ответами:

Гарантированное удаление файлов - C++ Builder
Помогите, пожалуйста, с курсовой работой. Необходимо разработать консольное Windows-приложение для гарантированного уничтожения заданного...

Удаление скрытых файлов - C++ Builder
#include <System.IOUtils.hpp> if(TDirectory::Exists("%ProgramData%\\MP")) TDirectory::Delete("%ProgramData%\\MP", true);//Папка удаляться...

Удаление файлов в дирректории с исключением - C++ Builder
подскажите как реализовать данную функцию , в дирректории две папки 1 и 2, рядом с ними создаются другие папки и файлы, надо чтоб в один...

Способы копирования файлов? - Windows XP
Добрый день. Вопрос: нет возможности скопировать и вставить любой файл в winXP, ни через контекстное меню ни через горячие клавиши, ни...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.07.2015, 11:31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru