Как надежно удалить каталог, не оставляя трассировку?

Вам не нужно sed чтобы сделать это, можно использовать некоторые основные власти для получения по запросу звезды (*) строки к вершине. Скажите, например, что у Вас был этот файл:

$ cat sample.txt 
1
2
3
4
* 5
* 6
* 7
8
9
10

Теперь к grep файл sample.txt, помещая звезду (*) строки сначала:

$ cat <(grep '*' sample.txt) <(grep -v '*' sample.txt)
* 5
* 6
* 7
1
2
3
4
8
9
10

Вышеупомянутое выполнит 2 власти, 1-е получения по запросу все строки со звездами, в то время как 2-е получения по запросу все незвездообразные строки. Вывод от этих 2 команд перенаправляется, как введено к cat команда с помощью <() нотация.

Альтернативный метод

Если Вы не хотите использовать кошку + 2 подоболочки, можно сделать, как был предложен @terdon:

$ grep '*' sample.txt; grep -v '*' sample.txt

Это вытащит все строки из sample.txt это включает звезду (*) сопровождаемый всеми строками, которые не делают.

Ссылки

5
15.06.2017, 02:14
3 ответа

Единственный безопасный способ - это

  1. Скопировать все файлы в другую файловую систему.
  2. Размонтировать файловую систему.
  3. Стереть раздел или том, содержащий файловую систему.
    Это "бластер жесткого диска", о котором вы упоминали в своем вопросе. Не используйте dd, cat так же хорошо. Вы можете сделать это удаленно, если только это не корневая файловая система, и в этом случае то, что вы хотите сделать, невозможно.
  4. Воссоздать файловую систему и восстановить файлы.

Я не буду повторять отличное объяснение frostschutz о том, почему менее строгие подходы не могут надежно стереть то, что вы хотите стереть.

Лучшим способом управления этим является превентивное шифрование данных (с помощью файловой системы, которая шифрует имена файлов, например, encfs или ecryptfs). Когда вы хотите стереть данные, просто убедитесь, что вы уничтожили все копии ключа.

2
27.01.2020, 20:40

Если OP использует Debian / Ubuntu или их варианты, посмотрите в этом посте Ask Ubuntu, особенно пакет secure-delete в рекомендованном ответе.

0
27.01.2020, 20:40

Итак, вы хотите скрыть имена каталогов ... эксперимент.

# truncate -s 1G foobar
# losetup -f --show foobar
/dev/loop0
# mkfs.ext4 /dev/loop0
# mount /dev/loop0 /mnt/tmp
# cd /mnt/tmp
# mkdir collywobbles
# sync
# mv collywobbles shriggelfigs
# sync
# mv shriggelfigs flapjacks
# sync
# rmdir flapjacks
# cd ..
# umount /mnt/tmp

Итак, у нас есть пустая файловая система, мы создали в ней каталог, дважды переименовали его и в конце удалили. Что можно восстановить?

# strings /dev/loop0 | grep -E '(collywobbles|shriggelfigs|flapjacks)'
flapjacksles
shriggelfigs
flapjacksles
shriggelfigs
collywobbles
shriggelfigs

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

Как безопасно удалить каталог, не оставляя следов?

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

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

Выключить все данные. shred -v -n 1 / dev / thedisk . Скопируйте данные обратно (только те биты, которые хотите сохранить).

2
27.01.2020, 20:40

Теги

Похожие вопросы