Một cảnh báo về việc sử dụng bypass
lệnh để xóa bản sao lưu cũ: nếu bản sao lưu bị xóa có các thư mục giống hệt nhau trong các bản sao lưu trước hoặc sau, thì các tệp cũng có thể bị xóa khỏi các bản sao lưu trước hoặc sau !
Time Machine không chỉ sử dụng các liên kết cứng cho các tệp không thay đổi mà còn sử dụng các liên kết cứng cho các thư mục không có tệp nào được thêm, thay đổi hoặc xóa. Điều này dẫn đến một cái gì đó như:
/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/
Với cách trên, xóa bất kỳ tệp nào /2014-11-06/folder/
là ổn và chỉ ảnh hưởng đến bản sao lưu cho ngày đó. Số lượng tham chiếu liên kết cứng bị giảm, do đó, " inode " file2
sẽ bị xóa, nhưng inode cho file1
và file3
vẫn sẽ có số tham chiếu là 1 do các bản sao lưu sau này. Do đó, rm -R /2014-11-06
cũng tốt.
Tuy nhiên, loại bỏ bất kỳ tập tin từ một trong hai /2014-11-13/folder/
, /2014-11-20/folder/
hoặc /2014-11-27/folder/
một cách hiệu quả sẽ loại bỏ nó khỏi tất cả những 3 thư mục.
Vấn đề là rm -R
không quan tâm đến các thư mục liên kết cứng. Nó chỉ truy xuất vào bất kỳ thư mục liên kết cứng nào mà nó tìm thấy, mạnh dạn xóa tất cả các tệp của nó và sau đó xóa thư mục trống.
Vì vậy: khi xóa một bản sao lưu cũ, bạn không nên truy cập vào một thư mục được liên kết cứng và xóa nội dung của nó. Thay vào đó, người ta chỉ nên loại bỏ liên kết cứng cho chính thư mục . Vì vậy, thay vì rm -R
sử dụng tmutil delete
như được giải thích trong câu trả lời của Arne .
Bên cạnh đó, dường như unlink
lệnh OS X không thể được sử dụng trên các thư mục : "chỉ một đối số, không phải là một thư mục, có thể được cung cấp" . API OS X có thể xóa các thư mục được liên kết cứng và GNU Coreutils cũng vậy, như được cài đặt bằng Homebrew .
Cuối cùng, để chứng minh tất cả những điều trên, một trường hợp thử nghiệm (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
Lưu ý rằng số lượng liên kết cho mỗi lần xuất hiện là 2 (cột thứ hai). Hãy loại bỏ sự xuất hiện đầu tiên:
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
Vì vậy, sau khi hủy liên kết một trong các tệp, số lượng liên kết giảm xuống 1 cho mỗi lần xuất hiện, mặc dù tệp vẫn được hiển thị 3 lần. Không có vấn đề nào. Loại bỏ sự xuất hiện đầu tiên một lần nữa:
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
Bây giờ tất cả đã biến mất. Rõ ràng tệp TopSites.plist
đã được thay đổi lần cuối 2014-11-06 và được liên kết cứng vào ngày 2014-11-13 khi một số tệp khác được thêm, thay đổi hoặc xóa trong Safari
thư mục. Tiếp theo, nội dung của Safari
thư mục không thay đổi trong hai lần sao lưu tiếp theo, vì vậy vào ngày 2014-11-20 và 2014-11-27, Safari
thư mục được liên kết cứng với bản sao lưu trước.
Thật vậy, 4 thư mục chỉ sử dụng 2 nút (cột đầu tiên):
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//