Site icon pollycoke :)

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 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

Exit mobile version
Vai alla barra degli strumenti