bypass
पुराने बैकअप को हटाने के लिए कमांड का उपयोग करने के बारे में चेतावनी : यदि हटाए गए बैकअप में फ़ोल्डर्स हैं जो पहले या बाद के बैकअप में समान हैं, तो फाइलें पहले या बाद के बैकअप से भी हटा दी जा सकती हैं !
टाइम मशीन न केवल अपरिवर्तित फ़ाइलों के लिए हार्ड लिंक का उपयोग करती है, बल्कि उन फ़ोल्डरों के लिए हार्ड लिंक का भी उपयोग करती है जिसमें कोई भी फाइल नहीं जोड़ी गई, बदली गई या बिल्कुल भी हटा दी गई। इसका परिणाम कुछ इस प्रकार है:
/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/
ठीक है, और केवल उस दिनांक के लिए बैकअप को प्रभावित करता है। हार्ड लिंक संदर्भ मायने रखता है, कम कर रहे हैं तो " inode के लिए" file2
निकाल दिया जाएगा, लेकिन के लिए inodes file1
और file3
अभी भी 1 के एक संदर्भ गिनती होगा बाद में बैकअप के कारण। इसलिए, rm -R /2014-11-06
यह भी ठीक है।
हालाँकि, किसी भी फ़ाइल को या तो हटा रहा है /2014-11-13/folder/
, /2014-11-20/folder/
या /2014-11-27/folder/
प्रभावी रूप से उन सभी 3 फ़ोल्डरों से हटा देगा।
समस्या यह है कि rm -R
हार्ड-लिंक किए गए फ़ोल्डरों की परवाह नहीं है। यह बस किसी भी हार्ड-लिंक्ड फ़ोल्डर को ढूंढता है, जो अपनी सभी फ़ाइलों को साहसपूर्वक हटा देता है, और फिर खाली फ़ोल्डर को हटा देता है।
इसलिए: पुराने बैकअप को हटाते समय किसी हार्ड-लिंक्ड फ़ोल्डर में पुनरावृत्ति नहीं होनी चाहिए और इसकी सामग्री को हटा देना चाहिए। इसके बजाय, किसी को केवल फ़ोल्डर के लिए हार्ड लिंक को हटा देना चाहिए । इसलिए, Arne के उत्तर में बताए गएrm -R
उपयोग के बजाय ।tmutil delete
एक तरफ के रूप में, ऐसा लगता है कि ओएस एक्स 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 इनोड (पहले कॉलम) का उपयोग करते हैं:
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//