![如何使用命令行删除 Time Machine 文件](https://linux22.com/image/1244100/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%88%A0%E9%99%A4%20Time%20Machine%20%E6%96%87%E4%BB%B6.png)
我想使用以下方法从我的 Time Machine 分区中删除一些文件/目录R M,但我无法这样做。我很确定问题与备份中文件的某种访问控制扩展属性有关,但不知道如何覆盖/禁用它们以获得R M工作。我收到的错误示例如下:
% sudo rm -rf Backups.backupdb/MacBook/Latest/MacBook/somedir
rm: Backups.backupdb/MacBook/Latest/MacBook/somedir: Directory not empty
rm: Backups.backupdb/MacBook/Latest/MacBook/somedir/somefile: Operation not permitted
出于多种原因,我不想为此使用 Time Machine GUI 或 Finder。如果可能的话,我希望能够为所有其他文件保留扩展保护(我不想全局禁用它们,除非我可以在完成工作后重新启用它们)。
答案1
要解决“操作不允许”错误,请使用时间机器安全网“绕过”程序:
sudo /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass rm -rfv /Volumes/[disk]/Backups.backupdb/[path]
在 10.8 Mountain Lion 中,旁路移至“Helpers”:
/System/Library/Extensions/TMSafetyNet.kext/Helpers/bypass
在 10.10 Yosemite 中,旁路移至此处:
/System/Library/Extensions/TMSafetyNet.kext/Contents/Helpers/bypass
谨防使用此功能删除特定快照时:由于 Time Machine 使用硬链接,因此rm -r
在文件夹上使用也可能会影响同一台机器的旧快照和新快照tmutil delete
(请参阅有关安全删除特定快照的其他答案。)使用rm
删除全部不过,单台机器的快照是可以的。使用删除特定文件也是如此rm
,这只会从您指定的快照中删除该硬链接文件,假设该文件不在硬链接目录中,因为这样您实际上会从全部那些硬链接目录。
答案2
BLUF(底线预付):
sudo tmutil delete _snapshot-dir_
使用sudo [chmod][chmod(1)] -R -N _folder_
从文件夹层次结构中删除所有 ACL 对 Time Machine 中的文件和文件夹不起作用备份.backupdb, 因为这TM 安全网机制和本文所述的标准318 科技期刊邮政(但可能不完全像描述的一样)。
(在通过查找 Eric W 的回答中提到的安全网(有效)了解到这一点之前,我只在从 TM 备份的子文件夹克隆的文件夹上进行了测试,并且修改模式奏效了。但尝试修改模式在实际 TM 备份中的文件夹上出现“操作不允许”错误。)
可能用途:
在 Mac OS 10.7+ 中,有一个工具命令(我还没有尝试过,因为我还在用 Snow Leopard)。它有一个删除动词,根据描述“可以从不是由当前机器制作或未被当前机器声明的备份中删除快照”(其中“快照”是一个日期文件夹,代表单个增量备份)。我不清楚这是否意味着它不能删除快照是由当前机器制造或声明。(?)
答案3
关于使用该命令删除旧备份的警告bypass
:如果删除的备份具有与之前或之后的备份完全相同的文件夹,则文件也可能从早期或晚期备份中删除!
Time Machine 不仅对未更改的文件使用硬链接,还对未添加、更改或删除任何文件的文件夹使用硬链接。结果如下:
/2014-11-06/folder/file1
/file2
/file3
/2014-11-13/folder/file1 = hard link to file /2014-11-06/folder/file1
/file2 (changed; new inode)
/file3 = hard link to file /2014-11-06/folder/file3
/2014-11-20/folder/ = hard link to folder /2014-11-13/folder/
/2014-11-27/folder/ = hard link to folder /2014-11-20/folder/
有了上述内容,删除任何文件/2014-11-06/folder/
都可以,并且只会影响该日期的备份。硬链接引用计数会减少,因此“索引节点“file2
将被删除,但由于后来的备份file1
, 和的 inodefile3
仍将具有 1 的引用计数。因此, rm -R /2014-11-06
也可以。
/2014-11-13/folder/
但是,从或中删除任何文件/2014-11-20/folder/
都会/2014-11-27/folder/
将其从所有这 3 个文件夹中删除。
问题是它rm -R
并不关心硬链接文件夹。它只是递归到它找到的任何硬链接文件夹,大胆地删除其中的所有文件,然后删除空文件夹。
所以:删除旧备份时,不应递归到硬链接文件夹并删除其内容。相反,应仅删除文件夹本身的硬链接。因此,不要按照说明rm -R
使用tmutil delete
在 Arne 的回答中。
另外,OS Xunlink
命令不能用于文件夹:“只能提供一个参数,且该参数不能是目录”。OS X API 可以删除硬链接文件夹,因此GNU 核心实用程序,例如使用安装自制。
最后,为了证明以上所有内容,有一个测试用例(OSX 10.6.8):
sh-3.2# ls -lFa 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 2 USERNAME staff 1551 10 30 2014 2014-11-06-012454/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 2 USERNAME staff 1551 10 30 2014 2014-11-13-024438/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 2 USERNAME staff 1551 10 30 2014 2014-11-20-014044/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 2 USERNAME staff 1551 10 30 2014 2014-11-27-025033/Users/USERNAME/Library/Safari/TopSites.plist
请注意,每次出现的链接数为 2(第二列)。让我们删除第一次出现的情况:
sh-3.2# /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass unlink 2014-11-06-012454/Users/USERNAME/Library/Safari/TopSites.plist
sh-3.2# ls -lFa 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 1 USERNAME staff 1551 10 30 2014 2014-11-13-024438/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 1 USERNAME staff 1551 10 30 2014 2014-11-20-014044/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 1 USERNAME staff 1551 10 30 2014 2014-11-27-025033/Users/USERNAME/Library/Safari/TopSites.plist
因此,在取消链接其中一个文件后,链接数下降到每次出现 1 个,尽管该文件仍然显示 3 次。目前没有问题。再次删除第一次出现的情况:
sh-3.2# /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass unlink 2014-11-13-024438/Users/USERNAME/Library/Safari/TopSites.plist
sh-3.2# ls -lFa 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist
ls: 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist: No such file or directory
现在一切都消失了。显然,该文件TopSites.plist
最后一次更改是在 2014-11-06,并于 2014-11-13 进行了硬链接,因为当时文件Safari
夹中添加、更改或删除了一些其他文件。接下来,文件夹的内容Safari
在随后的两次备份中没有变化,因此在 2014-11-20 和 2014-11-27,该Safari
文件夹与上一次备份进行了硬链接。
事实上,这 4 个文件夹仅使用 2 个 inode(第一列):
sh-3.2# ls -lFaid 2014-11*/Users/USERNAME/Library/Safari/
648651968 drwxr-xr-x@ 86 USERNAME staff 2924 9 10 16:06 2014-11-06-012454/Users/USERNAME/Library/Safari//
650804457 drwxr-xr-x@ 86 USERNAME staff 2924 9 10 16:07 2014-11-13-024438/Users/USERNAME/Library/Safari//
650804457 drwxr-xr-x@ 86 USERNAME staff 2924 9 10 16:07 2014-11-20-014044/Users/USERNAME/Library/Safari//
650804457 drwxr-xr-x@ 86 USERNAME staff 2924 9 10 16:07 2014-11-27-025033/Users/USERNAME/Library/Safari//
答案4
注意:由于 Eric W 提到的“TM 安全网”,此答案不适用于 Time Machine 备份的情况,而该问题正是针对这种情况。但对于大多数其他情况,有关如何摆脱 ACL 的信息是相关的。
无需使用从旧操作系统复制的 ACL 工具。
用于ls -le
查看 ACL 并chmod
对其进行修改。
欲了解更多信息,请输入man chmod
并查看“ACL 操作选项”。
从文件夹层次结构中删除所有 ACL 的命令是:
chmod -R -N foldername