Hasta ahora me he hecho con la página man de chflags, aunque es bastante poco común para las páginas man. Sin embargo, encuentro 2 parámetros muy peculiares. ¿Qué hace exactamente chflags opaque y nodump?
Página web
Hasta ahora me he hecho con la página man de chflags, aunque es bastante poco común para las páginas man. Sin embargo, encuentro 2 parámetros muy peculiares. ¿Qué hace exactamente chflags opaque y nodump?
Página web
El nodump
puede seguir siendo utilizado por MacOS. Aparentemente, el opaque
nunca ha sido utilizado por MacOS o OS X desde al menos Snow Leopard.
Este es un ejemplo del uso del nodump
bandera del archivo.
A continuación se muestra la salida del comando ls -lO hi.txt bye.txt
. Nota bye.txt
tiene el nodump
bandera.
-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
A continuación, el comando tar --nodump -cf mytarball hi.txt bye.txt
se ejecuta para crear el fichero de archivo mytarball
. Después, si el comando tar -tvf mytarball
se imprimirá el contenido del archivo. A continuación se muestra la salida.
-rw-r--r-- 0 davidanderson staff 9 Mar 20 12:13 hi.txt
Tenga en cuenta que el archivo bye.txt
fue omitido del archivo debido a la nodump
bandera.
Este es un ejemplo del uso del opaque
bandera del archivo.
Aunque puedo proporcionar un ejemplo, el ejemplo no funcionará con MacOS. En su lugar, el ejemplo utilizará la versión actual de FreeBSD.
El sistema operativo MacOS deriva de partes de BSD Unix. BSD implementa dos formas de unión: la -o union
al comando mount y la opción mount_unionfs
de mando. Al probar varias versiones de OS X y MacOS, descubrí que Snow Leopard sí implementa el -o union
mientras que High Sierra y Big Sur ignoran esta opción. Las tres versiones no incluyen la opción mount_unionfs
mando. Según la información disponible, el opaque
sólo se utiliza en esta última forma de unión. Así que, para dar un ejemplo, recurriré a FreeBSD, que sí incluye el mount_unionfs
comando.
La idea básica aquí es permitir que se realicen modificaciones en un montaje de sólo lectura. En el siguiente ejemplo, eliminaré un directorio que contiene un archivo, y luego crearé un nuevo directorio vacío con el mismo nombre.
En este ejemplo, tengo un DVD con dos directorios llamados dog
y cat
. El directorio dog
contiene el archivo poodle
y el directorio cat
contiene el archivo siamese
. Después de poner el DVD en la unidad óptica, introduje los siguientes comandos como usuario Root para montar el DVD y ver el contenido. El directorio actual es el directorio principal del usuario Root /root
.
mkdir pets
mount -t cd9660 /dev/cd0 pets
ls -lRFo pets
A continuación se muestra el ejemplo de salida.
Para permitir las modificaciones, he creado y montado el directorio vacío changes
utilizando el -t unionfs
opción. Además, imprimí los soportes para pets
. El mount
utiliza en realidad el comando mount_unionfs
para realizar el montaje.
mkdir changes
mount -t unionfs changes pets
mount | grep pets
A continuación se muestra un ejemplo de salida.
A continuación, utilicé los siguientes comandos para eliminar el directorio llamado dog
y confirmar el cambio.
rm -fr pets/dog
ls -lRFo pets
ls -lRFo changes
A continuación se muestra un ejemplo de salida. Observe que el directorio dog
ya no aparece en el directorio pets
. Además, el directorio changes
parece que sólo ha ganado el directorio vacío cat
.
Sin embargo, una tormenta blanca llamada dog
se añadió al directorio changes
y por lo tanto el directorio pets
. Para ver la mancha blanca, el -W
es necesario añadir la opción ls
como se muestra a continuación.
ls -lRFoW pets
ls -lRFoW changes
A continuación se muestra un ejemplo de salida.
El apagón dog
enmascara el directorio dog
en el DVD. A continuación, utilicé los siguientes comandos para crear un nuevo directorio vacío llamado dog
y mostrar los cambios.
mkdir pets/dog
ls -lRFoW pets
ls -lRFoW changes
A continuación se muestra un ejemplo de salida.
Aquí, la cortina de humo dog
fue sustituido por el directorio dog
con el opaque
bandera de archivo establecida. Este directorio enmascara el directorio dog
en el DVD. Para demostrar la necesidad de la opaque
he utilizado los comandos que se muestran a continuación para eliminar el opaque
y mostrar los resultados.
chflags noopaque changes/dog
ls -lRFoW pets
ls -lRFoW changes
A continuación se muestra un ejemplo de salida.
Sin el opaque
bandera de archivo, el archivo poodle
incorrectamente aparece en el pets/dog
directorio.
Los comandos finales a continuación sólo deshacen todos los montajes y cambios realizados en este ejemplo.
umount pets
umount pets
ls -lRFoW pets
ls -lRFoW changes
rmdir pets
rm -fr changes
A continuación se muestra un ejemplo de salida.
Unión de sistemas de archivos: Arquitectura, características y opciones de diseño
Sistemas de archivos de la Unión: Implementaciones, parte I
Wikipedia: MacOS
Unionfs: documentar las razones de los directorios opacos
Comando ls de FreeBSD
Comando de montaje de FreeBSD
Comando mount_unionfs de FreeBSD
Nota: FreeBSD se ejecutó descargando primero el archivo de máquina virtual lista llamado FreeBSD-12.2-RELEASE-amd64.vmdk.xz
. Este archivo se utilizó para crear una máquina virtual VirtualBox con un iMac 2013 como anfitrión. Este archivo también debería ser compatible con VMware Fusion Player.
Respuesta corta: nada especialmente relevante en los MacOS modernos.
Respuesta larga: ambas banderas se relacionan con características de Unix que probablemente nunca utilices.
El opaque
se relaciona con los "montajes de unión", es decir, montar un sistema de archivos sobre otro, de modo que pueda ver los archivos y carpetas de ambos mezclados en (lo que parece ser) un solo árbol de carpetas. La configuración de la bandera opaque
en una carpeta la hace... bueno, opaca, así que si también hay una carpeta con el mismo nombre en el otro sistema de archivos, no verás su contenido fusionado. Los montajes de unión no parecen funcionar en absoluto en las versiones recientes de MacOS, lo que hace que esta bandera sea completamente irrelevante.
El nodump
indica al dump
programa (una utilidad de copia de seguridad) que el elemento no necesita ser respaldado. MacOS ni siquiera incluye el dump
(aunque probablemente puedas añadirlo a través de homebrew o algo así). Puedes decirle al tar
programa para omitir nodump
con su --nodump
y supongo que otros programas de copia de seguridad también podrían tomar esto como una bandera de "no hacer copia de seguridad", pero no conozco ninguno que lo haga. Así que de nuevo esto es bastante irrelevante en MacOS.
OMI: La bandera opaca no tiene ningún significado con respecto a los montajes unionfs, porque todos los archivos y directorios ya son opacos. Sin embargo, la bandera opaca sí tiene significado con respecto a los montajes unionfs cuando se aplica a los directorios. Todo esto es irrelevante con respecto a MacOS (Sierra a través de Big Sur), ya que MacOS ignora la bandera -o union
para la opción mount
y no permitirá que el -t unionfs
opción.
@DavidAnderson Gracias, he actualizado un poco la respuesta. Por cierto, he probado a utilizar mount -o union
en High Sierra, y no da error y sí lista union
cuando hago una lista de los volúmenes montados con mount
pero la opción no parece tener ningún otro efecto (es decir, no veo realmente los archivos y carpetas del sistema de archivos subyacente).
Son Estándar POSIX banderas definidas en stat.h y cualquier programa unix puede leerlos con la llamada stat y el sistema los escribe y elimina en un patrón estándar para la compatibilidad con la funcionalidad de dump y 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 */
/*
Gracias por tu comentario bmike. Pero si te soy sincero no lo entiendo del todo. ¿Qué hacen realmente estos comandos, tienes algún ejemplo? Si pongo la bandera "opaque" o la bandera "nodump" en un archivo, ¿qué pasa exactamente con el archivo? ¿Qué cambia?
El sistema operativo almacena bits de metadatos en el sistema de archivos. Eso es todo @DarwinOSX no he añadido nada más ya que no pasa nada más. Por eso esta es una pregunta XY, no estás siendo claro con qué problema te enfrentas. Si no puedes poner o leer los bits, esa es una pregunta práctica que podemos responder.
AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.
4 votos
¿Esto lo explica maketecheasier.com/usar-flags-modificar-el-comportamiento-de-los-archivos-MacOS ?
0 votos
¿Cómo se relacionan estos dos valores distintos? No está claro cuál es el problema práctico al que te enfrentas aquí. Te responderé con algo de código fuente, pero es probable que esta sea una pregunta XY. No sabemos lo que usted no sabe, aquí. La respuesta a tu pregunta es básicamente 8, 1. Es como si preguntaras qué pasa cuando pongo una etiqueta roja y verde del Finder en un archivo. La respuesta es que esas etiquetas se establecen. Eso es todo.