Copia file e directory in modo ricorsivo con tar

Copiando un albero di directory e il suo contenuto in un altro filesystem usando tar, verranno preservati proprietà, permessi e timestamp. Un trucco accurato consente di usare tar per eseguire una copia ricorsiva senza creare un file tar intermedio.


Per copiare tutti i file e le sottodirectory nella directory di lavoro corrente nella directory / destinazione, utilizzare:

tar cf - * | (cd / target; tar xfp -)

La prima parte del comando prima che la pipe istruisca tar per creare un archivio di tutto nella directory corrente e scriverlo sullo standard output (il - al posto di un nomefile indica spesso stdout). I comandi tra parentesi fanno sì che la shell cambi la directory nella directory di destinazione e untar i dati dall'input standard. Poiché i comandi cd e tar sono contenuti tra parentesi, le loro azioni vengono eseguite insieme.

L'opzione -p nel comando di estrazione tar indirizza tar a conservare le informazioni su autorizzazione e proprietà, se possibile dato l'utente che esegue il comando. Se si sta eseguendo il comando come superutente, questa opzione è attivata per impostazione predefinita e può essere omessa.