我知道如果我删除一个文件,它实际上不会被“删除”,只是标记为“可以在需要时覆盖”,这样当需要该空间时,该文件就会被覆盖,这意味着文件被删除后,即使所有指向它的链接都消失了,也可以恢复它(如果任何这些信息不正确,请编辑这个问题以正确的方式解释它)。
但对于刚刚编辑过的文件也同样如此吗?如果文件的先前版本尚未制作成文件.save
或其他东西,是否可以恢复文件的先前版本?也就是说,如果我编辑一个文件然后保存我的更改,是否有任何方法可以恢复文件的先前版本,就像对已删除的文件所做的那样?如果没有,如果一个人不希望任何人都能够正确恢复已删除的文件,是否应该先编辑该文件并用其他内容替换内容?
只是为了澄清一下,以下是我想要回答的问题:
如果没有创建备份文件(例如文件
.save
),是否可以像对实际已删除的文件那样恢复文件的先前版本?在删除文件之前编辑它是否比直接删除它更安全(即在删除文件之前用其他内容覆盖其全部内容是否更安全)?
最后,诸如 BleachBit 之类的“粉碎”文件的工具是否会在删除文件之前用其他内容(例如删除了私钥的加密版本)覆盖文件内容,还是使用其他方法?
但请注意我问的不是如何记录文件更改,我问这个问题是因为我想知道在删除文件之前编辑文件是否比直接删除文件更安全,或者是否可以恢复以前的版本。我对告诉我应该使用版本控制系统来监控文件更改的答案不感兴趣。
答案1
如果我理解你的问题,答案是不。如果您对文件进行更改,则该文件的数据将被覆盖。这不像删除文件,这会告诉系统它能覆盖此数据,新数据就可以在硬盘上占据它的位置。数据被覆盖,以前的版本无法恢复,因为(我现在听起来重复了)它已经被覆盖了。为了在评论中提到一点,重要的是要注意,如果你编辑文件的内容,并且生成的文件是更小如果文件大小比原始文件大,那么部分数据仍然可以恢复。因此,最安全的做法可能是在文本编辑器中打开文件(无论文件类型如何),清除所有内容,然后坐在钥匙上一小时,用一个字符向文件发送垃圾邮件。然后,您可以反复创建一个非常大的文件,其中只有一个字符。当然,固态和闪存的工作方式略有不同,似乎最安全的做法是始终对这些类型的存储使用加密。
如果我理解了你的问题,答案是是的。更安全的做法是编辑文件,用随机垃圾替换其当前内容,保存,然后删除。然后,如果使用文件恢复工具,恢复的文件将充满随机垃圾。这本质上就是 shred 所做的。它将零“保存”到文件以前所在的位置,这样如果使用文件恢复工具,它们就会恢复零数据。
答案2
我也加入其中。=)
对于文件删除之前无法恢复的数据销毁,无论文件是否加密,我使用一个名为的应用程序scrub
。
sudo apt-get install scrub
然后在删除之前销毁该文件的命令是:
scrub <filename>
以下是加密文件被销毁的示例:
~$ cat testfile.des3
Salted__�����a�C7�"U��<���A�B-ԋ�����X�����E �5];A8���e�R�~���N��Ե��F��}Z;�_���^k`��:4��M�w�z��h3G����������+����?N(ٿ��M�_YW��CX��xi����k��ϝ#i����Q�F�����Ȃ(���Q�&;���w�o��^/
@"��RX��SͶ��*�H��-�u�6�2�>�3�m�Gz�����5���f0�D&"$j7W���mH$�C��Q���z�Sxk��#�����Pɀ
�z�NVբ��ARQz��A�?�A���A��/��+,)��M~_��(��q����x3+y��S+�l���gT�;hl���d'�O�Z#�Գ�uHgu1.�>��e�Ⱥ����Yo��.�3$D�c؛��D Jb��#4WrQA��Rr���0�=�2i3V�F�f��K�HLUQ@ˤ'��"�����ԣ
3�v���v�ʝ.%&�?����ۿa��|J������1�c����N@(�r�0E6�܍����Ϫo��A���I`cj)0��3�*c`�hǬ\�y2��x�><�������[�
C���W�:�#�"[�q�� #�λ$�>#x;��n�-d#K��_g@�B»h��m1���ݻ��]���gv���
WI�$J
h���l;a�;�Y�2��3��A6��� ڜ������W���ʬ����v7�1����ȄOM~Ux�iR('��78������B�EK0׆�$~����p�f���]2������
�~����D�);�X]^�e:��B��.}&�>C{3�j�']���X���,ǣ[\T��r�7<q#
�Ħ� ��m�>��@,$/Ɂ�y�D��i��4D�����'���----
~$ scrub testfile.des3
scrub: using NNSA NAP-14.1-C patterns
scrub: padding testfile.des3 with 3184 bytes to fill last fs block
scrub: scrubbing testfile.des3 4096 bytes
scrub: random |................................................|
scrub: random |................................................|
scrub: 0x00 |................................................|
scrub: verify |................................................|
~$ cat testfile.des3
SCRUBBED!--------------------
所以,现在如果我删除testfile.des3
所有可以恢复的文件,则该文件显示SCRUBBED!--------------------
答案3
是的,可以恢复被覆盖的文件,但恢复取决于文件系统以及你正在使用的应用程序. FAT, EXT2/3/4, NTFS 都删除文件标记已将其删除。(没有使用其他文件系统的经验)
如今,所有编写良好的应用程序通常都会打开一个临时文件,如果文件编写正确,则删除旧文件并将临时文件重命名为新文件。这样,如果程序在写入新文件时崩溃,它不会破坏旧文件。(例如,这就是 LibreOffice 覆盖其文件的方式)
安全擦除应用程序通常会覆盖文件,但在 EXT4 和 NTFS 下,碎片整理智能和日志功能会启动,以便绝对、肯定地确定被覆盖的文件已经完全消失,你需要覆盖全部的还有可用空间。
(即使在加密卷上)