关于使用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
和file3
仍然有1引用计数由于后续备份。因此, rm -R /2014-11-06
也可以。
但是,从中删除任何文件/2014-11-13/folder/
,/2014-11-20/folder/
或/2014-11-27/folder/
将有效地从所有这三个文件夹中删除该文件。
问题在于,rm -R
它不关心硬链接的文件夹。它只是递归到找到的任何硬链接文件夹中,大胆删除其所有文件,然后删除空文件夹。
因此:删除旧备份时,不应将其递归到硬链接文件夹中并删除其内容。相反,应该只删除文件夹本身的硬链接。因此,不要像Arne的答案中所解释的那样rm -R
使用。tmutil delete
顺便说一句,似乎OS X unlink
命令不能在文件夹上使用:“只能提供一个参数,不能为目录。” OS X API可以删除硬链接的文件夹,GNU Coreutils也可以删除,例如使用Homebrew进行安装。
最后,为了证明上述所有内容,请使用一个测试用例(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//