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/
問題はなく、その日のバックアップのみに影響します。ハードリンクの参照カウントは「ので、減少しているiノードについては、」file2
削除されますが、iノードのために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
余談として、OS Xのようですunlink
コマンドは、フォルダ上で使用することはできません。「ディレクトリであってはならない唯一の引数は、供給することができます」。OS X APIは、ハードリンクされたフォルダーを削除できます。また、Homebrewを使用してインストールしたようなGNU Coreutilsも削除できます。
最後に、上記のすべてを証明するために、テストケース(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(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
そのため、いずれかのファイルのリンクを解除すると、ファイルが3回表示されているにもかかわらず、リンクの数が発生するたびに1に減少しました。まだ問題ありません。最初の出現を再度削除します。
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
フォルダーの内容は後続の2つのバックアップで変更されなかったため、2014-11-20および2014-11-27では、Safari
フォルダーは以前のバックアップにハードリンクされていました。
実際、4つのフォルダーは2つのiノード(最初の列)のみを使用します。
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//