¿Cuál es la diferencia entre la estructura de directorios y el sistema de archivos ?
Los directorios y el sistema de archivos de Unix / Linux tienen el siguiente aspecto:
Los siguientes dos directorios obviamente los conocemos.
/home/abc/xyzdir1 --is a directory
/home/abc/xyzdir2 -- is a directory
Los siguientes tres ejemplos dicen sistema de archivos.
/proc -- is a file system
/ -- is a file system
/bin -- is a file system
¿Cómo puedo identificar cuál es un sistema de archivos y un directorio de los fragmentos de código anteriores?
filesystems
directory-structure
proc
Premraj
fuente
fuente
/proc
,/
y/bin
de sus ejemplos), por lo que no tengo claro cómo quiere identificar la "diferencia"./proc
,/
y/bin
son directorios. No son "sistemas de archivos". ¿Quizás quiere decir que desea identificar qué directorios son también el punto de montaje (raíz) de su sistema de archivos?Respuestas:
La gente no usa el sistema de archivos con mucho cuidado. En sus ejemplos, diría eso
/
,/bin
y/proc
son sistemas de archivos porque una partición completa (como/dev/sdb1
) está montada en esos directorios. Mi sistema Arch Linux no tiene/bin
un sistema de archivos, por lo que este ejemplo no es perfecto, pero ...El inodo número 2 es tradicionalmente el inodo "raíz" de todo un sistema de archivos en disco (que es el otro uso de la frase).
/
,/boot
y/home
todos tienen el inodo número 2, mientras/proc
que, que se presenta completamente por el núcleo y no tiene presencia en el disco, tiene el inodo 1. Esos números de inodo indican que un sistema de archivos completo en el disco o un sistema de archivos virtual se monta con ese nombre.La oración '
/home/abc/xyzdir1
es un directorio "básicamente significa que no se monta ningún sistema de archivos en el disco con ese nombre. Si haces el mismols -lid
comando en un directorio, obtienes algo como esto:El número de código 3670039 es el inodo asignado en el sistema de archivos en disco montado (en mi máquina) en
/home
.También puede encontrar sistemas de archivos invocando el
mount
comando. Enumera todos los sistemas de archivos montados y dónde están montados.fuente
/
,/bin
y/proc
son sistemas de archivos porque una partición completa ... está montada en esos directorios. Esto no es cierto para/proc
, como la respuesta más tarde implica.A riesgo de simplificar demasiado,
Desde que me pidieron un bis,
Si desea código, consulte la primera mitad de esta respuesta a Cómo determinar si un sistema de archivos Linux pertenece a un sistema en ejecución , la parte que verifica la validación
root_dir
. Simplemente está haciendo lo que dijo Bruce; verificar que es un directorio y verificar si su número de inodo es 1 o 2.fuente
A mi modo de ver, un sistema de archivos, en el sentido de UNIX, es una forma de implementar un árbol de directorios (estructura de directorios), o más precisamente, una forma de implementar la API del sistema de archivos UNIX. El sistema de archivos raíz está respaldado por una implementación particular, y cada vez que ingresa un directorio de punto de montaje, ingresa un subárbol respaldado por algo diferente.
La interfaz es siempre la misma, pero en un caso, tiene una partición de disco en particular en la parte posterior, en otro caso, habrá un programa que ni siquiera escribe en un dispositivo de almacenamiento. El
proc
sistema de archivos estará respaldado por un software que expone los elementos internos del núcleo; Unatmpfs
copia de seguridad estará respaldada por un software que escribe en la RAM y otros sistemas de archivos pueden escribir en la red o en otro lugar.En el sentido de la palabra que no es UNIXy, un sistema de archivos es una forma de organizar el almacenamiento de datos.
ext4
,btrfs
,fat
, Yntfs
son los sistemas de archivos en este sentido, sino también en el sentido UNIXy-que implementan la API del sistema de archivos.proc
no se clasificaría como un sistema de archivos dentro de este paradigma, más limitado, ya que no organiza el almacenamiento de datos.TL; DR:
fuente
Si bien la aceptación del directorio no es ambigua cuando se habla de sistemas de archivos, el sistema de archivos puede significar cosas diferentes dependiendo de lo que esté hablando.
En sus ejemplos, todas las rutas enumeradas son directorios, pero solo algunos de ellos también son puntos de montaje de los sistemas de archivos.
Puede usar el
df
comando para saber en qué sistema de archivos se encuentra un determinado archivo o directorio, y elmount
comando en la mayoría de las implementaciones de Unix y Linux para averiguar qué sistemas de archivos están presentes en su máquina, su tipo y sus puntos de montaje. p.ej:La afirmación
/bin
es que un sistema de archivos es dudoso,/bin
casi siempre está montado/
.fuente
Primero, una corrección a su suposición sobre un sistema de archivos y un directorio. Un sistema de archivos contiene uno o más directorios. Usando sus ejemplos
/proc
,/
y/bin
son directorios. No son "sistemas de archivos" en sí mismos, pero podrían ser la raíz de sus respectivos sistemas de archivos.Si desea identificar qué directorios son también el punto de montaje (raíz) de su sistema de archivos, puede usar algo como esto:
fuente
File System es una metodología para organizar y almacenar lógicamente grandes cantidades de datos de manera que el sistema sea fácil de administrar. un sistema de archivos consta de archivos, relaciones con otros archivos, así como los atributos (tipo de archivo, nombre de archivo, tamaño de archivo, propietario del archivo, marca de tiempo del archivo) de cada archivo.
Directorios : por ejemplo, el sistema de archivos Unix se compone esencialmente de archivos y directorios. Los directorios son archivos especiales que pueden contener otros archivos. el directorio superior es
/
(barra oblicua), con los directorios directamente debajo de los directorios del sistema./
Raíz del sistema de archivos Linux/bin
Los archivos ejecutables binarios se guardan aquí/boot
Los archivos relacionados con el arranque se guardan aquí/dev
Los archivos del dispositivo se guardan aquí/etc
Los archivos de configuración de todo el sistema se guardan aquí/home
Ubicación de los directorios principales de usuarios habituales./lib64
Las bibliotecas para ejecutables binarios se mantienen aquí./mnt
Punto de montaje temporal para DVD-Rom, unidad flash USB./opt
Los programas opcionales se instalan aquí como archivos de programa en Windows/proc
Kernel pseudo sistema de archivos/root
Directorio de inicio de superusuario root/sbin
Los archivos ejecutables binarios del sistema se guardan aquí/tmp
Los archivos temporales se guardan aquí./usr
Sistema de archivos de usuario/var
Los archivos variables se guardan aquí/srv
es una carpeta de servicio, contiene datos específicos del sitio que sirve este sistema.src y para más
Los siguientes dos directorios son directorios definidos por el usuario:
fuente
Si solo necesita un comando que le indique si la ruta es un directorio o no, use mountpoint (1) .
Para mí imprime
Lo bueno es que el estado de salida indica lo mismo nuevamente para que pueda usarlo en sus scripts de esta manera:
fuente