Je sais que des questions similaires ont été posées sur les autorisations, mais quelle forme de compression ou d'archivage conserve les autorisations et les propriétaires de chaque fichier et répertoire ?
J'envisageais le tar.gz
format, mais serait-ce correct ?
J'ai besoin de déplacer 37 Go de fichiers et de répertoires vers un autre serveur et j'ai besoin que tout soit exactement le même lorsqu'il n'est pas compressé.
Réponse acceptée :
Les outils d'archivage traditionnels tar et cpio préservent la propriété et les autorisations Unix (utilisateur/groupe/autre) ainsi que les horodatages (avec cpio, assurez-vous de passer -m
lors de l'extraction). Si vous n'aimez pas leur syntaxe mystérieuse¹, vous pouvez utiliser leur pax de remplacement POSIX (pax -w -pe
) Tous ces éléments génèrent une archive non compressée ; dirigez l'archive vers un outil comme gzip
ou xz
pour le compresser (GNU tar a des options pour faire la compression). Les utilisateurs et les groupes sont identifiés par leur nom ; GNU tar a une option .
Aucun de ces outils ne conserve les fonctionnalités modernes telles que l'ACL, les capacités, les contextes de sécurité ou d'autres attributs étendus.
Certaines versions de tar peuvent stocker ACL. Voir Quoi utiliser pour sauvegarder des fichiers, en préservant les ACL ? Avec GNU tar, passez --acls
à la fois lors de la création et de l'extraction de l'archive.
Un système de fichiers squashfs, comme suggéré par mikeserv, stocke les capacités et les attributs étendus, y compris le contexte SELinux, mais pas ACL. (Vous avez besoin de versions qui ne sont pas trop anciennes.) Si vous avez à la fois des contextes ACL et de sécurité, vous pouvez utiliser un système de fichiers squashfs et enregistrer l'ACL en exécutant getfacl -R
à la racine du système de fichiers d'origine et restaurez-les après avoir extrait les fichiers avec setfacl --restore
.
Si vous souhaitez enregistrer absolument tout, y compris l'ACL, les horodatages inférieurs à la seconde, les attributs étendus et les attributs spécifiques au système de fichiers, vous pouvez cloner le système de fichiers. L'inconvénient de cette approche est que vous ne pouvez pas facilement écrire directement une copie compressée. Le moyen ultime de cloner le système de fichiers consiste à copier le périphérique bloc ; bien sûr, c'est du gaspillage en ce sens qu'il copie l'espace vide. Vous pouvez également créer un système de fichiers suffisamment grand pour stocker tous les fichiers et utiliser cp -a
avec le cp
commande de GNU coreutils pour copier les fichiers ; GNU cp est assez doué pour tout copier, y compris les fonctionnalités non traditionnelles telles que les attributs étendus et les ACL.
¹ Bien que celui-ci soit vraiment exagéré.