Un avvertimento sull'uso del bypass
comando per rimuovere un vecchio backup: se il backup eliminato ha cartelle esattamente uguali nei backup precedenti o successivi, i file potrebbero essere eliminati anche dai backup precedenti o successivi !
Time Machine non solo utilizza hard link per file invariati, ma utilizza anche hard link per cartelle in cui non sono stati aggiunti, modificati o eliminati file. Ciò si traduce in qualcosa di simile:
/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/
Con quanto sopra, l'eliminazione di qualsiasi file /2014-11-06/folder/
va bene e influisce solo sul backup per quella data. I conteggi dei riferimenti del collegamento reale vengono ridotti, quindi " inode " per file2
verrà rimosso, ma gli inode per file1
e file3
avranno ancora un conteggio di riferimento di 1 a causa dei backup successivi. Quindi rm -R /2014-11-06
va bene lo stesso.
Tuttavia, la rimozione di qualsiasi file da entrambi /2014-11-13/folder/
, /2014-11-20/folder/
o /2014-11-27/folder/
in modo efficace e elimina da tutti quei 3 cartelle.
Il problema è che rm -R
non interessa le cartelle hard-linkate. Reclama semplicemente in qualsiasi cartella hard-link trovata, elimina audacemente tutti i suoi file e quindi rimuove la cartella vuota.
Quindi: quando si rimuove un vecchio backup, non è necessario ricorrere in una cartella con collegamenti fisici ed eliminarne il contenuto. Invece, si dovrebbe rimuovere solo il collegamento reale per la cartella stessa . Quindi, piuttosto che rm -R
usare tmutil delete
come spiegato nella risposta di Arne .
A parte questo, sembra che il unlink
comando OS X non possa essere usato su cartelle : "può essere fornito solo un argomento, che non deve essere una directory" . L'API di OS X può rimuovere le cartelle hard-linkate, così come GNU Coreutils , come installato usando Homebrew .
Infine, per dimostrare quanto sopra, un test-case (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
Si noti che il numero di collegamenti per ogni occorrenza è 2 (seconda colonna). Rimuoviamo la prima occorrenza:
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
Quindi, dopo aver scollegato uno dei file, il numero di collegamenti è sceso a 1 per ogni occorrenza, sebbene il file sia ancora mostrato 3 volte. Nessun problema ancora. Rimuovere di nuovo la prima occorrenza:
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
Ora sono andati tutti. Apparentemente, il file è TopSites.plist
stato modificato l'ultima volta il 06/11/2014 e hard-link il 13-11-2014, poiché alcuni altri file sono stati aggiunti, modificati o rimossi nella Safari
cartella. Successivamente, il contenuto della Safari
cartella non è cambiato nei due backup successivi, quindi il 20-11-2014 e il 27-11-2014 la Safari
cartella era strettamente collegata al backup precedente.
In effetti, le 4 cartelle usano solo 2 inode (prima colonna):
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//