2 votos

¿Qué es exactamente chflags opaque, nodump?

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

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

4 votos

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.

8voto

David Anderson Puntos 2189

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.


Referencias

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.

4voto

Nate Puntos 220

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.

6 votos

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.

1 votos

Aprendo mucho de ti y de @DavidAnderson - bien hecho

5 votos

@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).

3voto

Oskar Puntos 1242

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 */
/*

4 votos

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?

1 votos

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.com

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.

Powered by:

X