Risposte:
Linux (come altri unices) non fornisce nativamente una funzione di annullamento. La filosofia è che se è andata, è andata. Se fosse importante, avrebbe dovuto essere eseguito il backup.
Esiste un filesystem con fusibili che mantiene automaticamente copie delle vecchie versioni: copyfs , disponibile in tutte le buone distribuzioni. Certo, questo può usare molte risorse.
Il modo migliore per proteggersi da tali incidenti è utilizzare un sistema di controllo della versione (cvs, bazaar, darcs, git, mercurial, sovversione, ...). Ci vuole un po 'di tempo per imparare, ma ripaga meravigliosamente a medio e lungo termine.
Sfortunatamente no.
-i
opzione rm
abilitata per impostazione predefinita. I miei sistemi Unix non dovrebbero tenermi per mano.
No, non c'è annullamento magico in nessun Unix. Unix presume che tu sappia cosa stai facendo. Per il supporto di Annulla, usa un VCS (probabilmente anche l'editor di testo lo ha incorporato).
La maggior parte dei filesystem non ha la capacità di farlo in modo trasparente.
Il ripristino della macchina del tempo e del sistema su Mac e Windows rispettivamente sono solo sistemi di controllo di backup / modifica.
Non c'è annullamento nella riga di comando. È tuttavia possibile eseguire comandi come rm -i
e mv -i
. Questo ti chiederà "sei sicuro?" domanda prima di eseguire il comando.
È anche possibile aggiungere un alias per esso a uno script di avvio (ad esempio ~/.bashrc
o /etc/bash.bashrc
):
alias remove='rm -i'
alias move='mv -i'
Modifica: dai suggerimenti seguenti, ho rimosso i miei consigli per alias i comandi predefiniti. Invece, introduce ora nuovi comandi).
mv -i
viene richiesto solo quando sovrascriverà un file (il che lo rende utile e non odioso). Nella stessa ottica, alias cp='cp -i'
.
Il motivo per cui i sistemi Linux / Unix non hanno un recupero è dovuto al modo in cui la maggior parte dei filesystem memorizza le loro informazioni. Le meta-informazioni sui file sono tutte memorizzate nella parte anteriore del disco con riferimenti agli inode sul resto del disco. In genere, la maggior parte dei filesystem alloca 10 blocchi a un file in questa meta-area. I primi 7 si riferiscono ai primi 7 inode. L'ottavo e il nono vanno agli elenchi di inode (blocchi doppiamente collegati) e il decimo va a un elenco di elenchi di elenchi (blocchi collegati tripply). Questo varia da file system a file system (ext4, jfs, xfs, ecc.), Ma questi elenchi di blocchi in genere possono indirizzare file di dimensioni comprese tra 2 GB e diversi TB.
Ma poiché tutte queste informazioni sono memorizzate nella parte anteriore del disco, quando un file viene cancellato, non c'è modo di fare riferimento agli inode sul disco a quali metadati utilizzino. Al contrario, FAT32 e NTFS memorizzano effettivamente alcune informazioni di intestazione con i file stessi, rendendo più semplice l'identificazione del file a cui appartiene una serie di blocchi (purché lo spazio non sia stato ancora recuperato dai file più recenti). Nel lavoro di Linux, quando si elimina qualcosa, è quasi sempre la prima cosa che viene immediatamente sovrascritta da nuovi dati per efficienza.
Se vuoi davvero una funzione di annullamento, usa il controllo del codice sorgente. Subversion funziona davvero molto bene su una macchina a singolo utente. Lo uso per controllare tutti i miei file personali sul mio sistema di casa. Sembra eccessivo, fino al disastro, uno script canaglia o un errore di battitura a riga di comando.
rm -r .
Tuttavia non ti proteggerà . ;)
rm -r project.git
. Fortunatamente se si mantiene un'altra versione su un server remoto che è improbabile che accada
rm -r .
. Davvero stupido da parte mia.
Una cosa che mi piace aggiungere al mio .bashrc è una funzione di copia e rimozione. Qualcosa di simile a:
cprm(){
cp -p $1 ~/deleted/$1
rm $1
}
Ma devi prendere l'abitudine di digitare cprm non rm.
Ovviamente dovrai mantenere l'area eliminata se hai spazio su disco limitato.
"$1"
.
GitFS è un file system basato su fusibili, che calcola automaticamente le diff
s tra le versioni e consente il ripristino / la navigazione su di esse.
Pagina Web: https://www.presslabs.com/gitfs
Documenti: https://www.presslabs.com/gitfs/docs/usage/