Qual é a diferença entre a estrutura de diretórios e o sistema de arquivos ? Diretórios
Unix / Linux e sistema de arquivos têm a seguinte aparência:
Os seguintes dois diretórios obviamente conhecemos diretórios.
/home/abc/xyzdir1 --is a directory
/home/abc/xyzdir2 -- is a directory
os três exemplos a seguir estão dizendo sistema de arquivos.
/proc -- is a file system
/ -- is a file system
/bin -- is a file system
Como posso identificar qual é um sistema de arquivos e um diretório dos trechos de código acima?
filesystems
directory-structure
proc
Premraj
fonte
fonte
/proc
,/
e/bin
de seus exemplos), então não estou claro como você deseja identificar a "diferença"./proc
,/
E/bin
são diretórios. Eles não são "sistemas de arquivos". Você talvez queira dizer que deseja identificar quais diretórios também são o ponto de montagem (raiz) do sistema de arquivos?Respostas:
As pessoas não usam o sistema de arquivos com muito cuidado. Em seus exemplos, eu diria que
/
,/bin
e/proc
são sistemas de arquivos, porque uma partição inteira (como/dev/sdb1
) é montado sobre os diretórios. Meu sistema Arch linux não tem/bin
como sistema de arquivos, portanto, este exemplo não é perfeito, mas ...O inode número 2 é tradicionalmente o inode "raiz" de um sistema de arquivos inteiro em disco (que é o outro uso da frase).
/
,/boot
e/home
todos têm o número de inode 2, enquanto/proc
que, que é apresentado inteiramente pelo kernel e não possui presença em disco, possui o inode 1. Esses números de inode indicam que todo um sistema de arquivos em disco ou um sistema de arquivos virtual é montado usando esse nome.A frase '
/home/abc/xyzdir1
é um diretório "significa basicamente que nenhum sistema de arquivos em disco é montado usando esse nome. Sels -lid
você executar o mesmo comando em um diretório, obterá algo como isto:O número do inode 3670039 é exatamente o que o inode foi alocado no sistema de arquivos em disco montado (na minha máquina) em
/home
.Você também pode encontrar sistemas de arquivos chamando o
mount
comando Ele lista todos os sistemas de arquivos montados e onde eles estão montados.fonte
/
,/bin
e/proc
são sistemas de arquivos, porque uma partição inteira ... é montado sobre os diretórios. Isso não é verdade/proc
, como a resposta mais tarde implica.Correndo o risco de simplificar muito,
Desde que me pediram um bis,
Se você deseja código, consulte a primeira metade desta resposta em Como determinar se um sistema de arquivos Linux pertence a um sistema em execução - a parte que faz a validação
root_dir
. É apenas fazer o que Bruce disse; verificando se é um diretório e verificando se seu número de inode é 1 ou 2.fonte
A meu ver, um sistema de arquivos, no sentido UNIX, é uma maneira de implementar uma árvore de diretórios (estrutura de diretórios), ou mais precisamente, uma maneira de implementar a API do sistema de arquivos UNIX. O sistema de arquivos raiz é apoiado por uma implementação específica e, sempre que você insere um diretório de ponto de montagem, insere uma subárvore apoiada por algo diferente.
A interface é sempre a mesma, mas em um caso, você tem uma partição de disco específica no back-end; em outro caso, haverá um programa que nunca grava em um dispositivo de armazenamento. O
proc
sistema de arquivos será apoiado por software que expõe os componentes internos do kernel; Otmpfs
backup será feito por um software que grava na RAM e outros sistemas de arquivos podem gravar na rede ou em outro local.No sentido não UNIXy da palavra, um sistema de arquivos é uma maneira de organizar o armazenamento de dados.
ext4
,btrfs
,fat
, Entfs
são sistemas de arquivos neste sentido, mas também no sentido UNIXy-se implementar a API do sistema de arquivos.proc
não seria classificado como um sistema de arquivos nesse paradigma mais limitado, pois não organiza o armazenamento de dados.TL; DR:
fonte
Embora a aceitação do diretório seja inequívoca ao falar sobre sistemas de arquivos, o sistema de arquivos pode significar coisas diferentes, dependendo do que você está falando.
Nos seus exemplos, todos os caminhos listados são diretórios, mas apenas alguns deles também são pontos de montagem de sistemas de arquivos.
Você pode usar o
df
comando para saber em qual sistema de arquivos um determinado arquivo ou diretório é, e omount
comando na maioria das implementações de Unix e Linux para descobrir quais sistemas de arquivos estão presentes em sua máquina, seu tipo e pontos de montagem. por exemplo:A afirmação de que
/bin
um sistema de arquivos é dúbio,/bin
quase sempre é montado/
.fonte
Primeiro, corrija sua suposição sobre um sistema de arquivos e um diretório. Um sistema de arquivos contém um ou mais diretórios. Usando seus exemplos,
/proc
,/
e/bin
são diretórios. Eles não são "sistemas de arquivos" por si só, mas podem ser a raiz de seus respectivos sistemas de arquivos.Se você deseja identificar quais diretórios também são o ponto de montagem (raiz) do sistema de arquivos, use algo como isto:
fonte
O File System é uma metodologia para organizar e armazenar logicamente grandes quantidades de dados, de modo que o sistema seja fácil de gerenciar. um sistema de arquivos consiste em arquivos, relacionamentos com outros arquivos e os atributos (tipo de arquivo, nome do arquivo, tamanho do arquivo, proprietário do arquivo, registro de data e hora do arquivo) de cada arquivo.
Diretórios : por exemplo, o sistema de arquivos Unix é essencialmente composto por arquivos e diretórios. Diretórios são arquivos especiais que podem conter outros arquivos. o diretório mais alto é
/
(barra), com os diretórios diretamente abaixo dos diretórios do sistema./
Raiz do sistema de arquivos Linux/bin
Arquivos executáveis binários são mantidos aqui/boot
Os arquivos relacionados à inicialização são mantidos aqui/dev
Os arquivos do dispositivo são mantidos aqui/etc
Os arquivos de configuração em todo o sistema são mantidos aqui/home
Local para os diretórios pessoais de usuários regulares/lib64
Bibliotecas para executáveis binários são mantidas aqui/mnt
Ponto de montagem temporário para DVD-Rom, unidade flash USB./opt
Programas opcionais são instalados aqui, como Arquivos de Programas no Windows/proc
Pseudo sistema de arquivos do kernel/root
Diretório inicial da raiz do superusuário/sbin
Os arquivos executáveis binários do sistema são mantidos aqui/tmp
Os arquivos temporários são mantidos aqui/usr
Sistema de Arquivos do Usuário/var
Arquivos variáveis são mantidos aqui/srv
é uma pasta de veiculação, contém dados específicos do site que são veiculados por este sistema.src e para mais
Os dois diretórios a seguir são diretórios definidos pelo usuário:
fonte
Se você precisar apenas de um comando que informe se path é um diretório ou não use mountpoint (1) .
Para mim, imprime
O bom é que o status de saída indica o mesmo novamente para que você possa usá-lo em seus scripts como este:
fonte