Ceci est une ancienne révision du document !
Table des matières
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.
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
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
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
Limitation
Le format d'archive défini par la norme POSIX.1-1988 appelé ustar 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
Autre CPIO
find . -mount -print | cpio -pdm /mnt/newhost-disk
Autre
Avec Tar
tar -cvf allfiles.tar -T mylist.txt
