CPIO promemoria
Da PiemonteWireless.
Indice |
Un promemoria sull'uso dell'utility CPIO
CPIO e' un tools molto utile, che in alcuni casi puo' sostituire degnamente cp o tar.
utilizzo di base
Creare un archivio:
localhost% find path/ -depth -print | cpio -oaV > archive.cpio localhost% find path/ -depth -print | cpio -oaV -O archive.cpio
Creare un archivio compresso:
localhost% find path/ -depth -print | cpio -oaV | gzip -c > archive.cpio.gz
Estrarre un archivio:
localhost% cpio -imVd < archive.cpio localhost% cpio -imVd -I archive.cpio
Listare il contenuto di un archivio:
localhost% cpio -it < archive.cpio localhost% cpio -it -I archive.cpio
Usare cpio copy-pass per copiare la struttura di una directory in un altro posto:
localhost% find path/ -depth -print | cpio -pamVd /new/parent/dir
come regolarsi con il path
Evitare di usare path che comincino con /, perche' potrebbe creare un grave danno quando si estrae l'archivio.
E' buona pratica cambiare directory in cui (o di cui) si vuole fare cpio prima di avviare il comando.
localhost% pwd /usr/src/linux-2.4 localhost% cd .. localhost% find linux-2.4/ -depth -print | cpio -oaV -O linux-2.4.cpio
cpio con ssh
Per fare cpio di una directory locale, inviare l'output ad ssh e riceverlo su un cpio di un host remoto:
localhost% find path/ -depth -print | cpio -oaV | ssh user@host 'cd path/; cpio -imVd'
Ssh su un host remoto, fare cpio di una directory remota e riceverla su un cpio locale:
localhost% cd path/; ssh user@host "find path/ -depth -print | cpio -oaV" | cpio -imVd
Fare un backup di una cartella con cpio e ssh su un host remoto:
find path/ -depth -print | cpio -oaV |ssh user@host "cat > /remotepath/backups/path.2009XXXX.cpio"
cpio e rpm
Se si vuole estrarre un archivio RPM senza installarlo, occorre usare il tool "rpm2cpio" che crea uno stream cpio dei files nell'RPM.
Listare i files:
localhost% rpm2cpio foo.rpm | cpio -it ./usr/bin/foo ./usr/share/man/man1/foo.1.gz 39 blocks
notare che i path nello stream cpio iniziano con "./"
Estrarre i files:
localhost% rpm2cpio foo.rpm | cpio -imVd .. 39 blocks
Estrarre solo le manpages dal pacchetto:
localhost% rpm2cpio foo.rpm | cpio -imVd ./usr/share/man/man1/foo.1.gz
Riferimenti:

