2 votes

Que signifie exactement chflags opaque, nodump ?

J'ai réussi à me débrouiller avec la page de manuel chflags jusqu'à présent, même si c'est plutôt inhabituel pour les pages de manuel. Néanmoins, je trouve 2 paramètres très particuliers. Que font exactement les chflags opaque et nodump ?

Page d'accueil

https://ss64.com/osx/chflags.html

8voto

David Anderson Points 30783

Le site nodump peut toujours être utilisé par MacOS. A opaque n'a jamais été utilisé par MacOS ou OS X depuis au moins Snow Leopard.


Voici un exemple de l'utilisation de la fonction nodump le drapeau du fichier.

Voici la sortie de la commande ls -lO hi.txt bye.txt . Note bye.txt a le nodump drapeau.

-rw-r--r--  1 davidanderson  staff  nodump 8 Mar 20 12:13 bye.txt
-rw-r--r--  1 davidanderson  staff  -      9 Mar 20 12:13 hi.txt

Ensuite, la commande tar --nodump -cf mytarball hi.txt bye.txt est exécuté pour créer le fichier d'archive mytarball . Ensuite, si la commande tar -tvf mytarball est saisi, le contenu de l'archive sera imprimé. Voici le résultat.

-rw-r--r--  0 davidanderson staff       9 Mar 20 12:13 hi.txt

Notez que le fichier bye.txt a été omis de l'archive en raison de la nodump drapeau.


Voici un exemple de l'utilisation de la fonction opaque le drapeau du fichier.

Bien que je puisse fournir un exemple, celui-ci ne fonctionnera pas avec MacOS. A la place, l'exemple utilisera la version actuelle de FreeBSD.

Le système d'exploitation MacOS est dérivé de certaines parties de BSD Unix. BSD met en œuvre deux formes d'union : le système -o union à la commande mount et l'option mount_unionfs commande. En testant différentes versions d'OS X et de MacOS, j'ai constaté que Snow Leopard implémente bien la commande -o union tandis que High Sierra et Big Sur ignorent cette option. Ces trois versions n'incluent pas l'option mount_unionfs commandement. A priori, la opaque Le drapeau de fichier n'est utilisé que par cette dernière forme de syndicalisation. Ainsi, pour fournir un exemple, je vais me tourner vers FreeBSD, qui inclut l'option mount_unionfs commandement.

L'idée de base ici est de permettre des modifications sur un montage en lecture seule. Dans l'exemple suivant, je vais supprimer un répertoire contenant un fichier, puis créer un nouveau répertoire vide avec le même nom.

Dans cet exemple, j'ai un DVD avec deux répertoires nommés dog y cat . Le répertoire dog contient le fichier poodle et le répertoire cat contient le fichier siamese . Après avoir placé le DVD dans le lecteur optique, j'ai entré les commandes suivantes en tant qu'utilisateur root pour monter le DVD et voir son contenu. Le répertoire courant est le répertoire personnel de l'utilisateur root. /root .

mkdir pets
mount -t cd9660 /dev/cd0 pets
ls -lRFo pets

Voici l'exemple de sortie.

Pour permettre les modifications, j'ai créé et monté le répertoire vide changes en utilisant le -t unionfs option. Aussi, j'ai imprimé les montages pour pets . Le site mount utilise en fait la commande mount_unionfs pour effectuer le montage.

mkdir changes
mount -t unionfs changes pets
mount | grep pets

Voici un exemple de sortie.

Ensuite, j'ai utilisé les commandes ci-dessous pour supprimer le répertoire nommé dog et confirmez la modification.

rm -fr pets/dog
ls -lRFo pets
ls -lRFo changes

Vous trouverez ci-dessous un exemple de sortie. Notez que le répertoire dog n'apparaît plus dans le répertoire pets . De même, le répertoire changes semble n'avoir gagné que le répertoire vide cat .

Cependant, un voile blanc nommé dog a été ajouté au répertoire changes et donc le répertoire pets . Pour voir le voile blanc, le -W doit être ajoutée à l'option ls comme indiqué ci-dessous.

ls -lRFoW pets
ls -lRFoW changes

Vous trouverez ci-dessous un exemple de sortie.

Le voile blanc dog masque le répertoire dog sur le DVD. Ensuite, j'ai utilisé les commandes ci-dessous pour créer un nouveau répertoire vide nommé dog et montrer les changements.

mkdir pets/dog
ls -lRFoW pets
ls -lRFoW changes

Vous trouverez ci-dessous un exemple de sortie.

Ici, le voile blanc dog a été remplacé par le répertoire dog avec le opaque drapeau de fichier activé. Ce répertoire masque le répertoire dog sur le DVD. Pour démontrer la nécessité de la opaque j'ai utilisé les commandes ci-dessous pour supprimer le drapeau du fichier opaque et montrer les résultats.

chflags noopaque changes/dog
ls -lRFoW pets
ls -lRFoW changes

Vous trouverez ci-dessous un exemple de sortie.

Sans le opaque l'indicateur de fichier, le fichier poodle incorrectement apparaît dans le pets/dog répertoire.

Les commandes finales ci-dessous annulent simplement tous les montages et les changements effectués dans cet exemple.

umount pets
umount pets
ls -lRFoW pets
ls -lRFoW changes
rmdir pets
rm -fr changes

Vous trouverez ci-dessous un exemple de sortie.


Références

Union des systèmes de fichiers : Architecture, caractéristiques et choix de conception
Systèmes de fichiers de l'Union : Implémentations, partie I
Wikipédia : MacOS
Unionfs : documenter les raisons des répertoires opaques
Commande ls de FreeBSD
Commande de montage FreeBSD
Commande mount_unionfs de FreeBSD

Note : FreeBSD a été exécuté en téléchargeant d'abord le fichier fichier prêt pour la machine virtuelle nommé FreeBSD-12.2-RELEASE-amd64.vmdk.xz . Ce fichier a été utilisé pour créer une machine virtuelle VirtualBox avec un iMac 2013 comme hôte. Ce fichier devrait également être compatible avec VMware Fusion Player.

4voto

Gordon Davisson Points 30215

Réponse courte : rien de particulièrement pertinent sur les MacOS modernes.

Réponse longue : ces deux drapeaux concernent des fonctionnalités Unix que vous n'utiliserez probablement jamais.

  • Le site opaque concerne les "montages groupés", c'est-à-dire le montage d'un système de fichiers sur un autre, de sorte que vous pouvez voir les fichiers et les dossiers des deux systèmes mélangés ensemble dans (ce qui semble être) une seule arborescence de dossiers. La définition de l'indicateur opaque sur un dossier le rend... eh bien, opaque, donc s'il y a aussi un dossier du même nom dans l'autre système de fichiers, vous ne verrez pas son contenu fusionné. Les montages d'union ne semblent pas fonctionner du tout dans les versions récentes de MacOS, ce qui rend cet indicateur complètement inutile.

  • Le site nodump indique à la dump programme (un utilitaire de sauvegarde) que l'élément n'a pas besoin d'être sauvegardé. MacOS n'inclut même pas la fonction dump (bien que vous puissiez probablement l'ajouter via homebrew ou autre). Vous pouvez dire à la tar programme à sauter nodump avec ses fichiers --nodump et je suppose que d'autres programmes de sauvegarde pourraient également prendre cela comme un drapeau "ne pas sauvegarder", mais je n'en connais aucun qui le fasse. Donc, encore une fois, cela n'est pas pertinent sous MacOS.

3voto

Oskar Points 1242

Ils sont Norme POSIX les drapeaux définis dans stat.h et tout programme unix peut les lire avec l'appel stat et le système les écrit et les supprime selon un modèle standard pour la compatibilité avec les fonctionnalités dump et unionfs.

/*
 * Definitions of flags stored in file flags word.
 *
 * Super-user and owner changeable flags.
 */
#define UF_SETTABLE 0x0000ffff  /* mask of owner changeable flags */
#define UF_NODUMP   0x00000001  /* do not dump file */
#define UF_IMMUTABLE    0x00000002  /* file may not be changed */
#define UF_APPEND   0x00000004  /* writes to file may only append */
#define UF_OPAQUE   0x00000008  /* directory is opaque wrt. union */
/*

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X