网络上删除的文件去哪儿了?

phi*_*hil 5 networking windows-7

我有一个家庭网络 Win 10 和 Win 7。我经常从 Win 10 的一台机器 7 读取文件,因为后者连接到我的大屏幕电视。

我经常通过网络从Win 10中删除Win 7文件。当我在 Win 7 上查看回收站时,文件不存在!Win 10 上的 Recycle 也没有(无论如何我认为它们不会。)

我刚刚做了一个测试。从 10 删除了 7 上的文件。未显示在 7 的回收中。然后使用 Recuva 扫描文件夹并显示文件。我能够恢复它。很正常的期待。

所以谜团就是为什么它没有出现在 7 的回收站中。

Wes*_*eed 6

原因是回收站是一个“特殊”文件夹,其功能仅在处理删除命令时在本地计算机上起作用。回收站与 Recuva 等取消删除工具之间的区别在于,回收站是一个“安全”的地方,可以存储您可能不想删除的文件。保证其中的文件可以恢复,直到您故意清空它。当一个文件被“实际”删除时,它可能可以使用 Recuva 之类的工具恢复,但不能保证,诉诸于这意味着出现了可怕的错误。

最重要的是,回收站是一项方便的功能,可帮助您撤消在自己的计算机上删除自己的文件。它在网络上的其他计算机上不起作用。

如果您对坚韧不拔的细节感兴趣,请继续阅读……否则,就接受它作为答案。


TL; 博士

在您计算机上每个卷的根目录下都有一个常规(隐藏)目录,称为 $Recycle.Bin。该目录中的子目录代表系统上每个曾经删除过文件的用户的 SID(安全标识符)(每个用户都有一个唯一的 SID)。Windows 将桌面上的回收站表示为计算机上所有驱动器上每个 $Recycle.Bin 目录的所有用户 SID 子目录的“投影”组合。

例如,假设您的用户 SID 是S-1-5-21-123456789-123456789-123456789-12345,并且您的计算机有 3 个本地卷(C:D:E:),它们可以是 3 个不同的硬盘驱动器、同一驱动器上的 3 个分区或两者的任意组合。在每个硬盘驱动器上,您将拥有以下内容:

C:\$Recycle.Bin\S-1-5-21-123456789-123456789-123456789-12345
D:\$Recycle.Bin\S-1-5-21-123456789-123456789-123456789-12345
E:\$Recycle.Bin\S-1-5-21-123456789-123456789-123456789-12345

Windows 将在您的桌面上显示一个回收站图标,其中包含来自所有三个目录的文件。对于此设置,您应该注意以下几点:

  • 您桌面上的回收站仅包含您删除的文件。如果计算机上还有其他用户帐户,您将看不到他们删除的文件,也看不到您的文件。即使您从所有用户以前都有权访问的目录中删除了一个文件,也是如此。这有一个副作用,即让一个用户能够“捕获”文件;除了最初删除它的人之外,没有人可以恢复该文件。
  • 当您“删除”一个文件时,Windows 实际上会对您的 $Recycle.Bin 目录执行“移动”操作,将其重命名为唯一的名称,并附加一些元数据,表明它的名称最初是什么以及它最初来自哪里(所以您可以稍后恢复它)。这就是为什么您可能会在同一目录中出现多个具有相同名称的文件,而这通常是无法做到的。
  • 在同一卷上从一个位置到另一个位置的“移动”操作是即时的,因为只有文件系统指针被修改,以使文件看起来好像在不同的目录中。系统不必实际将文件内容移动到新位置。但是,您不能将文件从一个驱动器“移动”到另一个驱动器(在这种情况下,Windows 会先复制一份文件,然后再删除原始文件)。这就是为什么每个驱动器都有自己的 $Recycle.Bin 目录。您不希望“删除”操作将潜在的大文件复制到另一个驱动器,这会花费时间并且另一个驱动器可能没有足够的空间。

此外;

  • SMB 协议(Windows 文件共享背后的协议)不是由 Microsoft 发明的,在 Windows 出现之前,它被设计为与计算机无关。因此,它故意没有托管共享的计算机的底层文件系统的概念。这就是为什么非 Windows 系统既可以托管也可以连接到 SMB 共享的原因;该协议抽象了实际存储介质的技术细节,允许不兼容的设备(甚至电话和打印机)相互共享文件。
  • 这也是您不能在两个不同的文件共享之间“移动”文件的原因。您实际要做的是将文件下载到您自己的计算机,将文件上传回位于新位置的远程计算机,然后删除原始文件。即使两个不同的共享实际上只是同一个物理文件夹的不同名称,也会发生这种情况。
  • $Recycle.Bin 目录不可共享,因为它的内容只对实际存储它的计算机有意义。

当您通过网络删除文件时,将文件“存放”在回收站中是您计算机的工作,而不是远程计算机的工作。这不可能通过网络工作。原因如下:

  • 您的计算机无权访问远程计算机的回收站,因为它不可共享。
  • 即使它是可共享的,您也可能没有该计算机上的帐户来放置文件(例如,如果共享允许“公共”、匿名用户访问它)。
  • 即使你有一个帐户,它会进入哪个卷的回收站?请记住,在 SMB 共享之间“移动”文件实际上是双向复制。您的计算机不知道远程计算机的底层存储。

如果 SMB 协议包含远程计算机以自己的方式处理删除操作的某些功能,那么其​​中的一些问题是可以解决的。但这会有其自身的问题:

  • 您使用的任何其他计算机如何知道在另一台计算机的回收站中查看您可能已从中删除的文件?
  • 如果您或远程机器当时处于离线状态,您将如何清空回收站?如果不再可以访问该远程机器怎么办?您将永远无法清空回收站。
  • 如果您恢复已删除的文件,它会去哪里?共享名称、服务器名称和 IP 地址可以随时更改,不同机器上的不同共享实际上可以指向同一个物理位置。
  • 如果远程共享不在 Windows 计算机上(甚至根本不在计算机上)怎么办?它没有回收站的概念来放置文件。
  • 许多其他问题我什至没有想到。

当您只有两台计算机并且您是唯一使用它们的人时,很多事情都很难让您理解。但在更广泛的计划中,所有这些都成为一个巨大的问题。

这就是为什么在协议开发近 40 年(!)之后,仍然没有任何普遍接受的通过网络恢复已删除文件的方法。


Sam*_*bis 5

从网络共享中删除文件会永久删除它们,就像您将它们发送到回收站然后清空回收站一样。您应该在网络驱动器上启用卷影副本以恢复已删除的文件或将共享设置为映射驱动器,然后在连接到共享的 PC 上启用该映射驱动器上的回收站。