Menu Chiudi

Recuperare file eliminati con lsof e cp

ovvero: “Oh merda, metti in pausa… metti in pausa!

Questa guida vi mostrerà come recuperare file eliminati usando due semplicissimi comandi unix: “lsof” e “cp”. Quanto scritto vale solo nel caso non troppo raro in cui il file che avete appena eliminato è ancora “trattenuto” perché usato da qualche processo.

totem.png
Totem sta ancora suonando il file che ho appena eliminato!

Esempio: ho finalmente creato un MIX decente del mio nuovo brano: “Super Hit Estate 2007”, grazie ad Ardour. Sto ascoltando il brano con totem (o qualsiasi player abbia a portata di mano) e preso dall’euforia durante i 20 secondi del mio assolo decido di eliminare tutte le precedenti prove di missaggio. Ovviamente tra tutti file che ho eliminato c’è pure il mix finale tanto venuto bene! Nooo… lavoro perso per un errore di distrazione!

Beh in casi come questo c’è una soluzione. La soluzione è proprio il player che sta ancora suonando il file eliminato: non chiudetelo! Inoltre alcuni player devono essere messi in pausa per non passare a suonare il file successivo o per non uscire :-)

Vi sarete mai chiesti come mai con Linux si possono tranquillamente eliminare i file attualmente in uso? Come mai con winzoz non è permesso eliminare un virus che si sta comodamente auto-spedendo a tutti gli indirizzi email che avete in rubrica¹, visto che è in uso? Beh la risposta è duplice:

  1. Winzoz è per perdenti, questo lo sapete già
  2. Linux usa la dir virtuale /proc per schiaffarci dentro tante cose interessanti, ta cui i file attualmente in uso :-)

Bene, adesso useremo appunto /proc per avere indietro il nostro sudato file, prima di tutto vediamo di scovarlo, appunto con lsof:

$: lsof | grep sh07_fin04-solo-M-chp2-OK.wav | awk '{print $2, $4}'
9156 27r

Beh sì, i nomi che do ai miei mix audio sono assurdi, chi fa musica col PC mi può capire :-D Ovviamente possiamo benissimo non scrivere tutto il nome, bastava anche greppare “sh07”.

In ogni caso abbiamo due numerini come risposta. Perfetto! Quelli sono i numeri che ci salveranno il c**o e ci renderanno protagonisti dell’estate 2007, col nostro brano suonato da tutte le radio. Procediamo recuperando il file con un semplice cp:

$: cp /proc/9156/fd/27 ~/evviva.wav

Come vedete abbiamo usato il primo numero (il pid di totem) e il secondo (il file descriptor) per creare l’indirizzo. Una rapida controllata ci confermerà che il file è perfettamente integro. Potremo finalmente chiudere totem e rinominare evviva.wav in qualcosa di più umano :-)

Lo so, vi state chiedendo: “ma allora quando guardo un film della produzione Shuren-Television, di 700MB… Linux tiene ogni volta una copia in /proc?“. Domanda legittima, ma ovviamente non è così, sarebbe uno spreco enorme… ecco invece la risposta: /proc in realtà non esiste, è una dir virtuale che contiene solo info e indirizzi che sono in memoria. Il trucco è che noi del file eliminiamo solo la rappresentazione sul filesystem, e poi Linux provvede ad eliminare i dati dal disco fisso. Invece se il file è in uso da parte di qualche processo questa operazione è ritardata finché il processo non sarà terminato.

Se volete qualche tecnicismo in più potete dare un occhio all’articolo che mi ha ispirato, su Linux.com

– – –

[¹] Compresi gli indirizzi delle vostre ex, che crederanno che le state minacciando con armi informatiche

9 commenti

  1. Pingback:City Seventeen

  2. zakk

    Oddio, Shuren-Television ha un picchio di audience! Mi hanno tolto pure dalla lista dell’Auditel. :D

  3. Shuren

    Aehm… Quello lì sopra sono io… Non mi chiederò come mai c’era “zakk” nel form name. Ad ogni modo, gran bel tip! :)

  4. Luigi Molinaro

    Da quello che so io su ext3 non è possibile recuperare file cancellati, è una delle caratteristiche di questo file system.

    @Felipe
    Io ho testato su XFS, non credo ci sia niente di differente se usi ext3

Rispondi

%d blogger hanno fatto clic su Mi Piace per questo:
Vai alla barra degli strumenti