如何防止自己无意中删除文件夹?


41

我的桌面上有一个非常重要的文件夹。我偶尔清理桌面,我非常担心自己可能会无意中删除提到的文件夹。有没有一种方法可以防止这种灾难,而又不限制我对文件夹内容的频繁读写操作?请注意,我不介意偶尔一次删除文件夹中的内容,但文件夹本身对我很重要。如果将其删除,我会付出很多努力。


69
台式机是存储关键数据,将其存储在其他位置并在台式机上对其进行快捷方式的最糟糕的地方。
摩押人

2
通常的做法是,快捷方式仅指向文件夹,一切正常。
摩押2015年

3
@JasonStack可能,但不一定。如果您移动文件夹,并且有其他程序或文档假定该文件夹在桌面上,则可能会损坏某些内容。例如,如果您有链接到其他文件的文件,则可能会发生这种情况。如果这不适用于您的内容,那么您可能不会有任何问题。
烧烤

8
不要那样做 <hr />进行备份。始终进行备份。在外部媒体上。始终在外部媒体上进行备份。另外,您应该查看Windows的“文件历史记录/以前的版本”功能。非常方便。
forloop

1
“如果现在我将该文件夹移动到某个位置,并在Desktop上创建一个具有相同名称的快捷方式,则取决于该文件夹的所有内容都将继续正常工作吗?” @JasonStack我在下面的最新答案中回答了这一问题。我想指出的是,出于明显的原因引入了Junctions,以便能够将事物移动到不同的物理体积而不影响任何东西。
JDługosz

Answers:


112

不要试图避免不可避免的情况。使用备份和版本控制。

但是,您可以拒绝自己的“删除”权限。删除该目录中的文件和文件夹是一个单独的权限,您也可以在需要时将其禁用。


26
备份时要大声疾呼+版本控制建议。
bertieb 2015年

6
@bertieb非常关键。OP不必不小心删除文件夹就不会丢失工作,该驱动器明天就可以死掉。
CodeCaster

11
同意 在没有备份的情况下运行,只是将来某时的数据丢失,而不是如果丢失。现在,如果您不好意思,请您
赶紧

7
作为IT专家,请对所有重要文件(尤其是对客户或您的企业而言)使用备份和版本控制。请,请,请。
corsiKa 2015年

8
您问这种情况发生的几率是多少?真该死,我本人去年年底不小心删除了一个文件夹,里面装满了我无法找回的重要内容。重大的唤醒电话,现在我热切地将工作备份到GitHub,镜像到BitBucket以及镜像到便携式硬盘上。从幸存者,孩子那里获取它,不要让它发生在您身上。听这些人的声音,备份您的东西。认真地。

51

有一个更好的解决方案:将文件夹移到更合适的位置(例如,%USERPROFILE%\ Documents)

如果必须从桌面访问该文件夹,则始终可以创建快捷方式。这样可以确保即使您不小心删除了快捷方式,也不会真正删除该文件夹或其宝贵内容。

如果其他应用程序依赖于此文件夹位于桌面上,则可以使用“ mklink”命令创建符号链接。由于符号链接是在文件系统级别处理的(而快捷方式是仅指向其他位置的实际文件),因此,尝试在路径中使用这种“快捷方式”的程序应该没有任何兼容性问题。


2
在这种情况下,这是正确的答案。

我喜欢这个主意。但是,我不知道它是否适用于我在桌面上提到的文件夹中安装的Cygwin。它不会对我的Cygwin安装和功能造成问题吗?
codezombie 2015年

@JasonStack,如果将Cygwin安装移动到其他位置,则可能会遇到问题。
烧烤

1
@JasonStack,您可能需要编辑问题以包含Cygwin详细信息,因为它确实会影响可能的答案。
烧烤

1
@JasonStack Cygwin应该像Unix挂载点那样不可见地处理Junction。Unix程序了解符号链接,而较新版本的Cygwin库应将符号链接视为(Vista风格的)符号链接,因此程序可以将它们“视为”特殊或不特殊。
JDługosz

7

是的,可能受您拥有的Windows版本的限制(家庭版可能无法调整所有权)。另外,请注意,删除删除权限并不能保证您无法删除文件夹。我被烧了好多次了。

这是一种通常很简单的方法:

  1. 创建一个新用户
  2. 将您不想删除的文件夹的所有权分配给该新用户
  3. 删除用户的访问权限以删除文件夹,请确保您的用户在文件夹中具有完全的读/写权限。

我已经在Windows NT到Windows 7上使用了这个技巧。有时,您必须在设置完善之前仔细研究一下这些设置。

首先测试新文件夹(包括在测试文件夹中创建文件和文件夹!

另外:请注意“使用备份和版本控制”的建议。如果文件那么重要,则至少需要2个副本。


Windows Home Basic 可以调整所有权;他们只是不包括任何小程序。第三方权限工具仍然有效。另外,所谓的“上帝模式” PIDL也可能列出了它。我不记得了 这取决于他们是否也保留了管理单元。
JDługosz

5

Windows文件系统具有“只读”标志。这比必须为这种简单的效果设置DACL权限要简单。

在命令提示符下,使用ATTR命令。在GUI外壳程序中,它应该位于“属性”中,尽管gui可能会做一些复杂的事情,并且超出了您真正想要的范围。


同样,如果您使用相同的名称重新创建目录,则可以在其上应用“还原以前的版本”。


更新资料

我在Win7系统上进行了实验。该GUI删除(不回收站)忽略R对目录标志。也没有其他警告提示,就像我见过的for H和/或Sflags一样。rd从命令行发出使访问被拒绝,正如预期的那样。但是,rd无论如何,您不能只是一个非空目录:delete file和remove directory是不同的命令。递归地删除包含目录的命令的命令将删除目录,而不会删除现在为空的目录。

因此,保护​​目录本身在您想到的GUI操作中不起作用。这意味着任何更高级的防止目录本身被删除的方法都不会阻止它被首先清空!您说您仍然希望通过目录内的常规访问权限来创建和删除文件,因此完全锁定它不是您的解决方案。

最好的解决方案似乎是符号链接。制作一个符号链接(新的风格,什么样的Windows Vista及以上的现在叫符号链接)台式机,当目录确实存在别的地方,就到该目录的工作在这个意义上,如果我删除的桌面图标(Shift-Delete键,无回收站),实际目录不受影响,因为仅删除了链接。

桌面图标的Shift-Delete不在乎是否已使用R属性标记。

使用标准Windows文件打开对话框的程序可以毫无问题地浏览符号链接。它实际上解析了链接目录的名称,因此打开的文件是真实名称;例如,当我浏览它时Desktop\MyFolder变成D:\scratch\MyFolder了。

程序使用旧式链接(Junction),看到名称仍在路径中;例如,C:\Users\john\Desktop\MyFolder\test.txt因此它是一个链接的事实是不可见的。但是,GUI删除操作仍将其视为链接,而不是在其后面进行。

无论哪种方式,如果程序确实直接使用别名,它将起作用。但是,有时使用一个名称查看文件,有时使用另一个名称查看文件,可能会使事情变得混乱。

结论

在桌面上使用Junction的情况下,该文件夹确实位于其他位置,这将是完全透明的。(可选)使用DACL防止意外删除桌面上的连接点文件。至少,有一个脚本可以在需要时重新创建。

奖金

我没有尝试过,但是我想知道您是否可以在“新项目”中添加一些东西来重新创建结点或符号链接?然后,右键单击现在为空的桌面,选择“新建...”,然后从菜单中选择“桌面垃圾”。让它还原您在台式机上真正想要的一切。


我从未听说过Windows中的桌面垃圾或联结。我所知道的是捷径。那是指路口吗?顺便说一句,我最近从有关mklink的答案和评论中发现了,然后将所需的文件夹(Temp)移到Documents文件夹,然后mklink mylink %userprofile%\Documents\Temp在其上运行。它起作用了,我似乎在处理目录的程序上没有问题。
codezombie

桌面垃圾是我为他的脚本补上的名字。或者,对于他添加的用于调用脚本的菜单项。这是Desktop Junction和Junk Drawer上的双关语。一个快捷方式是不同的东西。快捷方式仅对 GUI Shell 已知,会使其他所有内容混淆。因此,使用“文件打开”对话框时,它可能像符号链接一样工作,但是您无法将其用作实际目录名称:“ C:\ Users \ john \ Desktop \ Shortcutname \ foo.txt”将不起作用。
JDługosz


2

您可能考虑做的另一件事是启用Windows 8.1的文件历史记录功能。这将使您的系统自动保留文件和文件夹更改的历史记录。最好与外部存储位置一起使用,但也可以与本地驱动器一起使用。

http://blogs.msdn.com/b/b8/archive/2012/07/10/protecting-user-files-with-file-history.aspx


我无法说说Win 8.1以及文件历史记录是如何工作的,但是在Win 7中,右键单击文件夹会显示“以前的版本”,以便从以前的“还原点”恢复文件。从理论上讲很好,但是如果填满磁盘,Windows会丢弃以前的还原点并... of-不再有以前的版本。不要比自己更依赖操作系统。
伊恩W

在Win 8.1中,以前的版本功能已删除,文件历史记录功能已被其替代。
烧烤

我了解功能的更改,但是,当磁盘空间不足以创建新的“文件历史记录”条目时,仍然会发生问题。想测试一下吗?指导-不要再信任操作系统,而您仍然信任自己。
伊恩W

@Ian W,不知道有什么关系。文件历史记录在单独的存储卷上创建其备份。完全填满硬盘驱动器不会覆盖备份,因为它们位于单独的卷上。
烧烤

1

一个有效的解决方案是将文件夹移出桌面,然后使用命令设置NTFS联结MKLINK

C:\ Users \ Administrator> MKLINK

创建一个符号链接。

MKLINK [[/ D] | [/ H] | [/ J]]连结目标
        / D创建目录符号链接。默认为文件
                符号链接。
        / H创建一个硬链接,而不是符号链接。
        / J创建目录连接。
        链接指定新的符号链接名称。
        目标指定新链接的路径(相对或绝对)
                指。

因此,在您的情况下,命令将是:

MKLINK /J %userprofile%\Desktop\ImportantFolder D:\ImportantFolder

D:\ImportantFolder实际文件夹在哪里,在哪里是%userprofile%\Desktop\ImportantFolder交界处。

笔记:

  • Junction不必使用与源文件夹相同的名称。
  • 联结不是副本,实际上是重定向访问文件夹的另一种方法。想象一下它就像普通(* .lnk)快捷方式的文件夹版本。
  • 连接与文件夹的常规快捷方式不同,因为它们对程序完全透明。
  • 如果删除联结,则不会删除实际文件夹。
  • 但是,任何文件修改都D:\ImportantFolder与执行操作相同。因此,如果您删除passwords.txt联结中的文件,则也将其删除d:/ImportantFolder
  • 如果不小心删除了联结,则可以再次创建它。

图形化(更高效,更轻松)方式(带有上下文菜单扩展)

您可以改为安装Link Shell Extension,然后将文件夹移动到其他位置,右键单击并选择,Pick link source...然后右键单击桌面,然后选择drop as...-> Junction。您完成了。

这是我在全新系统上安装的第一个应用程序,因为它是一个非常有用的解决方案。如果您必须在PC上管理路口或硬/符号链接,我强烈建议您这样做。


0

您可以将所有文件和文件夹备份在onedrive中。您可以免费使用它,但限制为15gb。但是,如果您有Office 365订阅,则您在onedrive中有1TB存储空间,并且该存储空间已包括在内。


感谢您的建议,但由于此文件夹中的大量读/写操作以及带宽使用的限制,我目前无法使用云备份。
codezombie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.