{{tag>Sauvegarde find}} = Créer une archive tar depuis un find grâce à cpio ### Présentation **cpio** est à la fois le nom d'une __commande__ et d'un __format__ d'archivage. Voir manuel http://www.gnu.org/software/cpio/manual/cpio.html La commande **cpio** prend aussi en charge d'autre format que cpio, comme par exemple le format **ustar**. ### Tar avec cpio Utilisez l'option '-depth' à find. ~~~bash find . -depth | cpio -ov --format=ustar |pigz > archive.tar.gz # Équivalent ? find . -depth | xargs tar czf archive.tar.gz find . -exec tar rvf archive.tar "{}" \; ~~~ //'-depth' pas nécessaire si votre find ne retourne pas de répertoire. Comme avec l'option '-type f' par exemple// ~~~bash find . -type f |cpio -ov --format=ustar |pigz > archive.tar.gz ~~~ Si vous avez des noms de fichiers avec des espaces et des caractères bizarres ~~~bash find . -depth -print0 |cpio -0 -ov --format=ustar |pigz > archive.tar.gz ~~~ Il est également possible de créer un tarball depuis un find (ou un **ls**) avec **Pax** qui est à privilégier. Cependant contrairement à pax, cpio est livré par défaut dans la plupart des distributions. Voir [Pax](https://fr.wikipedia.org/wiki/Pax_%28Unix%29) ### Limitation Le format d'archive défini par la norme POSIX.1-1988 appelé [ustar](http://www.gnu.org/software/tar/manual/html_node/ustar.html) est très portable. Mais en revanche, il est assez limité. * Taille max de l'archive : 8GB * Taille max nom de fichier : 256 caractères grand max (souvent moins) * Taille max nom lien symbolique : 100 caractères Voir détails http://www.gnu.org/software/tar/manual/html_section/tar_68.html ### Exemple en pratique [[debian_conflit_2paquet_meme_fichier]] ## Autre CPIO ~~~bash find . -mount -print | cpio -pdm /mnt/newhost-disk ~~~ ## Autre Avec Tar ~~~bash tar -cvf allfiles.tar -T mylist.txt ~~~