Pratica: Operazioni su file e directory

Rispondere, eventualmente facendo prove sul proprio sistema, alle seguenti domande:
- Come si fa a vedere il contenuto di una directory?
- Come si vede l'elenco di TUTTI i file presenti in una directory ordinati per data, dai più vecchi ai più recenti?
- Come si vede lo stesso elenco ordinando per dimensione dei file?
- Come si può copiare l'intero contenuto di una directory in un altra directory, preservando tutti gli attributi (Comodo per backup)?
- Come si sposta una intera directory da un altra parte?
- Come si può cancellare una directory e il suo intero contenuto?
- Come si può cancellare l'intero contenuto del sistema? (ATTENZIONE, DA NON PROVARE!)
- Come si crea un link simbolico? E un hard link?
- Se si ha poco spazio libero su una partizione, come si può spostarne parte del contenuto mantenendo un link alla directory spostata?

- Come si fa a vedere il contenuto di una directory?
ls è il comando base. ls -la è comodo sia per vedere gli attributi completi che i file nascosti (quelli che iniziano con un punto).

- Come si vede l'elenco di TUTTI i file presenti in una directory ordinati per data, dai più vecchi ai più recenti?
ls -latr Visualizza gli attributi completi (-l) di tutti i file compresi quelli nascosti (-a), ordinati per data (-t) al contrario (-r).

- Come si vede lo stesso elenco ordinando per dimensione dei file?
ls -laSr. Anche in questo caso l'ordine è inverso, dal più piccolo al più grande: di solito si cercano i file grossi ed è più comodo vederli in fondo all'output di una eventuale lunga lista.

- Come si può copiare l'intero contenuto di una directory in un altra directory, preservando tutti gli attributi (Comodo per backup)?
cp -a è l'ideale e corrisponde a cp -pRd:
-p pre preservare tutti gli attributi,
-R per ricorsivamente includere sottodirectory e loro contenuto,
-d per copiare link simbolic come link (e non copiare i file a cui puntano)

- Come si sposta una intera directory da un altra parte?
Con mv si spostano file o directory (notare che mv fatto su file, anche enormi, presenti nella stessa partizione, è molto veloce, perchè non sposta fisicamente i dati nell'hard disk ma modifica solo il dato (la entry) all'interno di directory.
Il concetto di directory su Unix è particolare.
Sostanzialmente la directory è un file con il suo inode che punta ad un dato il cui contenuto che è l'elenco dei file che contiene.

- Come si può cancellare una directory e il suo intero contenuto?
rm -Rf /nomedirectory (f forza la cancellazione senza chiedere conferma all'utente, r e R sono analoghi e indicano di procedere ricorsivamente).
Notare che un rm -rf /tmp cancella la directory tmp e il suo contenuto, rm -rf /tmp/* cancella solo il suo contenuto.

- Come si può cancellare l'intero contenuto del sistema? (ATTENZIONE, DA NON PROVARE!)
rm -rf / (comando da dimenticare)

- Come si crea un link simbolico? E un hard link?
ln -s nome_file nome_link (Crea un link simbolico)
ln nome_file nome_link (Crea un hard link)

- Se si ha poco spazio libero su una partizione, come si può spostarne parte del contenuto mantenendo un link alla directory spostata?
E' correto prima spostare la directory e il suo contentuo nella partizione libera e poi creare il link. Attenzione al nome del link, deve essere uguale al nome della directory e puntare al suo contenuto, per rendere indistinguibile l'accesso ai file contenuti.
Ad esempio, se la domanda fosse stata:
"Se si ha poco spazio libero nella partizione dove è presente la directory /var/log/httpd come si può spostarne il contenuto nella directory /mnt/hdc1 in cui è stata montata una partizione con sufficiente spazio a disposizione?"
La risposta avrebbe dovuto essere qualcosa tipo:
mv /var/log/httpd/* /mnt/hdc1/ ; ln -s /mnt/hdc1 /var/log/httpd
Il ; separa i due comandi e permette di eseguirli uno dopo l'altro da un unica riga shell.
Questa specifica operazione andrebbe fatta disattivando momentaneamente il server Web che scrive sui file di log spostati.

Privacy Policy