DEE355 – Sistemas Operacionais
Universidade Federal do Paraná (UFPR)
Prof. Jéfer – jefer@ufpr.br
Objetivos:
Base Bibliográfica:
Arquivos são estruturas usadas para armazenar dados em um sistema de arquivos. Eles podem conter texto, código, imagens, vídeos ou qualquer tipo de informação. Cada arquivo possui atributos como nome, tipo, permissões e metadados.
Abaixo estão os principais aspectos relacionados a arquivos:
relatorio.txt
(arquivo de texto), .bashrc
(arquivo oculto de configuração).
documento.txt
)./home
)./dev/sda
).link_simbolico.txt
).cat arquivo.txt
(exibe o conteúdo).echo "texto" > arquivo.txt
(adiciona conteúdo).rw-r--r--
(leitura, escrita, execução).touch arquivo.txt
.nano arquivo.txt
(editar com Nano).rm arquivo.txt
.Criando e Verificando Atributos de um Arquivo:
# Criar um arquivo
echo "Hello, World!" > hello.txt
# Verificar atributos
stat hello.txt
Pergunta: O que o comando stat
exibe sobre o arquivo?
Explorando Tipos de Arquivos:
echo "Teste" > teste.txt
.mkdir pasta
.ln -s teste.txt link.txt
.ls -l
.Gerenciando Permissões de Arquivos:
touch arquivo.txt
.ls -l arquivo.txt
.chmod 600 arquivo.txt
.ls -l arquivo.txt
.Discussão:
Arquivos são a base do armazenamento de dados em sistemas operacionais. Compreender sua estrutura, tipos, atributos e operações é essencial para gerenciar eficientemente informações e garantir a segurança e organização do sistema.
Diretórios são estruturas usadas para organizar arquivos em um sistema de arquivos. Eles funcionam como "pastas" que agrupam arquivos e outros diretórios, facilitando a navegação e o gerenciamento de dados.
Existem duas formas principais de organizar diretórios:
/home/usuario/documentos
) ou relativo (./documentos
).
Comandos essenciais para gerenciar diretórios no Linux:
mkdir nome_do_diretorio
mkdir projetos
(cria um diretório chamado "projetos").
ls
ls -l
(lista arquivos e diretórios com detalhes).
cd
cd projetos
(entra no diretório "projetos").
rmdir
(para diretórios vazios) ou rm -r
(para diretórios com conteúdo).
rm -r projetos
(remove o diretório "projetos" e seu conteúdo).
Criando e Navegando por Diretórios:
# Criar um diretório
mkdir projetos
# Entrar no diretório
cd projetos
# Criar um arquivo
touch plano.txt
# Listar o conteúdo do diretório
ls -l
Pergunta: O que acontece se você tentar criar um diretório com um nome que já existe?
Explorando a Estrutura de Diretórios:
mkdir -p projeto/{src,doc,backup}
projeto/src
e crie um arquivo chamado main.c
:
cd projeto/src
touch main.c
cd ../..
tree projeto
tree
?Discussão:
mkdir
, ls
e cd
no dia a dia de um administrador de sistemas?Um sistema de arquivos é composto por várias estruturas que gerenciam o armazenamento e o acesso aos dados. Abaixo estão os principais componentes:
Diferentes estratégias são usadas para alocar blocos de dados em um sistema de arquivos:
O journaling é um mecanismo que registra operações em um log antes de aplicá-las ao sistema de arquivos, garantindo consistência em caso de falhas.
ext4
e XFS
usam journaling.
Links permitem criar múltiplas referências para um mesmo arquivo ou diretório. Existem dois tipos principais:
ln arquivo.txt link_rigido.txt
.
ln -s arquivo.txt link_simbolico.txt
.
Criando e Verificando Links:
# Criar um arquivo
echo "Conteúdo do arquivo" > arquivo.txt
# Criar um link rígido
ln arquivo.txt link_rigido.txt
# Criar um link simbólico
ln -s arquivo.txt link_simbolico.txt
# Verificar inodes
ls -li arquivo.txt link_rigido.txt link_simbolico.txt
Pergunta: Qual é a diferença entre os inodes dos links rígidos e simbólicos?
Explorando Estratégias de Alocação:
dd if=/dev/zero of=arquivo.bin bs=1M count=1
.stat arquivo.bin
.O gerenciamento de espaço em disco é essencial para garantir que o sistema opere de forma eficiente. Abaixo estão as principais técnicas:
Backups são cópias de segurança que garantem a recuperação de dados em caso de falhas. Ferramentas comuns incluem:
rsync -av /home/usuario/ /backup/
(copia arquivos para o diretório de backup).
tar -czvf backup.tar.gz /home/usuario/
(cria um backup compactado).
A consistência do sistema de arquivos é verificada para garantir que não haja corrupção de dados. O comando fsck
é usado para essa finalidade:
fsck /dev/sda1
(verifica a partição /dev/sda1
).
A otimização de desempenho envolve técnicas para melhorar a eficiência do sistema de arquivos:
Criando um Backup com tar:
# Compactar um diretório
tar -czvf meusdocs.tar.gz projetos/
# Verificar o conteúdo do arquivo compactado
tar -tzvf meusdocs.tar.gz
Pergunta: O que o parâmetro -z
faz no comando tar
?
Explorando Gerenciamento de Espaço em Disco:
df -h
.du -sh /home/usuario
./home/usuario/documentos
usando tar
.df
e du
?Discussão:
fsck
na manutenção da consistência do sistema de arquivos?
O gerenciamento e a otimização de sistemas de arquivos são fundamentais para garantir a eficiência, a segurança e a confiabilidade do armazenamento de dados. Ferramentas como tar
, rsync
e fsck
são essenciais para administradores de sistemas.
Comparação:
Exemplo Prático:
# Verificar o sistema de arquivos de uma partição
file -s /dev/sda1
# Listar sistemas de arquivos montados
df -Th
# Criar um sistema de arquivos ext4 em uma partição
mkfs.ext4 /dev/sdb1
# Verificar a integridade de um sistema de arquivos ext4
fsck /dev/sda1
Considerações:
O sistema de arquivos do Linux segue uma hierarquia padrão, onde cada diretório tem uma função específica. Abaixo estão os principais diretórios e suas funções:
ls
, cp
, mv
estão aqui.
/etc/passwd
(usuários), /etc/shadow
(senhas criptografadas).
/home/usuario
contém documentos, downloads e configurações pessoais.
/var/log
(arquivos de log), /var/cache
(dados temporários).
libc.so
(biblioteca padrão do C).
fdisk
, ifconfig
.
Comandos essenciais para gerenciar e monitorar o uso de disco e partições:
df -h
(mostra o uso em formato legível).
du -sh /home
(mostra o tamanho total do diretório /home
).
du
para análise de uso de disco.
ncdu /var
(navegação interativa no diretório /var
).
iostat -x 1
(monitora I/O a cada segundo).
lsblk
(lista dispositivos de bloco e partições).
O comando tar
é amplamente usado para compactar e descompactar arquivos. Abaixo estão os principais parâmetros:
tar -cvf arquivo.tar pasta/
(cria um arquivo .tar
).
tar -czvf arquivo.tar.gz pasta/
(cria um arquivo .tar.gz
).
tar -cvf arquivo.tar pasta/
(mostra os arquivos sendo compactados).
tar -cvf backup.tar pasta/
(define o nome do arquivo como backup.tar
).
tar -xvf arquivo.tar
(extrai os arquivos).
Exercício: Use os comandos df
, du
e tar
para:
/home
./home/usuario/documentos
em um arquivo .tar.gz
.Nesta atividade, você vai praticar comandos essenciais do Linux para manipulação de arquivos e diretórios, além de explorar conceitos como links simbólicos, permissões e sistemas de arquivos.
Use o comando mkdir backup
para criar um diretório chamado backup
.
Pergunta: Qual é a finalidade de um diretório de backup?
Use o comando echo "Nota importante" > nota.txt
para criar um arquivo de texto.
Pergunta: O que o operador >
faz no comando acima?
Use o comando mv nota.txt backup/
para mover o arquivo para o diretório backup
.
Pergunta: Qual é a diferença entre os comandos mv
e cp
?
Use o comando ln -s backup/nota.txt nota_link.txt
para criar um link simbólico.
Pergunta: O que acontece se o arquivo original (nota.txt
) for excluído? O link simbólico ainda funcionará?
Use o comando mount | grep ext4
para listar os sistemas de arquivos do tipo ext4
.
Pergunta: Qual é a função do comando grep
nesse contexto?
Use o comando ls -l backup/nota.txt
para ver as permissões do arquivo.
Pergunta: O que significam as permissões -rw-r--r--
?
Use o comando tar -czvf backup.tar.gz backup/
para compactar o diretório.
Pergunta: Para que serve o parâmetro -z
no comando tar
?
Use o comando tar -xzvf backup.tar.gz
para extrair o conteúdo.
Pergunta: O que acontece se você tentar extrair o arquivo em um diretório que já contém um arquivo com o mesmo nome?
Crie um script de backup automático:
backup.sh
com o seguinte conteúdo:
#!/bin/bash
# Script de backup simples
DATA=$(date +%Y-%m-%d)
tar -czvf backup_$DATA.tar.gz /caminho/para/diretorio
echo "Backup concluído: backup_$DATA.tar.gz"
chmod +x backup.sh
../backup.sh
.Discussão:
Responda e teste seus conhecimentos!
Responda as seguintes questões:
stat
exibe sobre um arquivo.tar
auxilia na realização de backups?/usr/bin
, /etc
e /home
no Linux.df
, du
e lsblk
na gestão do disco.Respostas:
stat
exibe os metadados do arquivo, como tamanho, permissões, timestamps e número do inode.tar
agrupa e, se especificado, compacta arquivos (ex.: tar -czvf
cria, comprime com gzip, mostra o progresso e define o arquivo de saída), facilitando backups./usr/bin
contém os executáveis dos programas instalados; /etc
guarda os arquivos de configuração; e /home
abriga os diretórios pessoais dos usuários.df
exibe o uso geral de espaço em disco; du
detalha o uso por diretórios/arquivos; e lsblk
lista dispositivos e partições.O que é Fragmentação?
Tipos de Fragmentação:
Impactos da Fragmentação:
Como os Sistemas Operacionais Lidam com a Fragmentação?
Simulação:
Este slide demonstra a alocação aleatória de blocos em um disco virtual para diferentes arquivos (1 e 2), ilustrando a fragmentação – ou seja, quando os blocos alocados não estão contíguos. Clique na área para reiniciar a simulação.
Exemplo Prático:
# Verificar a fragmentação de um sistema de arquivos no Linux
sudo fsck -f /dev/sda1
# Desfragmentar um sistema de arquivos NTFS no Windows
defrag C: /U /V
O que é Recuperação de Arquivos?
Técnicas de Recuperação:
debugfs
(Linux) para inspecionar sistemas de arquivos ext3/ext4.photorec
são especializadas nessa técnica.testdisk
ajudam a reconstruir partições.Ferramentas de Recuperação:
extundelete
:
extundelete /dev/sda1 --restore-all
.testdisk
:
photorec
:
Boas Práticas para Evitar Perda de Dados:
rsync
, tar
ou soluções de backup automatizado.smartctl
.rm
com cuidado ou configure um alias para mover arquivos para uma "lixeira" em vez de excluí-los permanentemente.alias rm="mv --target-directory=$HOME/.Trash"
.Exemplo Prático:
# Recuperar arquivos excluídos com extundelete
sudo extundelete /dev/sda1 --restore-all
# Recuperar partições com testdisk
sudo testdisk /dev/sdb
# Recuperar arquivos de mídia com photorec
sudo photorec /dev/sdc
O que é o Samba?
Benefícios do Samba:
Configuração do Samba:
/etc/samba/smb.conf
.read only
, writeable
, valid users
e force user
para controlar o acesso.smbpasswd
para permitir o acesso aos compartilhamentos.Exemplo de Configuração:
[global]
workgroup = WORKGROUP
server string = Servidor Samba
security = user
[compartilhado]
path = /srv/compartilhado
read only = no
valid users = usuario1
Comandos Úteis:
sudo apt install samba
sudo smbpasswd -a usuario1
sudo systemctl restart smbd
testparm
Desafios e Boas Práticas:
testparm
antes de colocar em produção.Exemplo Prático:
# Criar um diretório compartilhado
sudo mkdir -p /srv/compartilhado
sudo chmod 777 /srv/compartilhado
# Adicionar um usuário ao Samba
sudo smbpasswd -a usuario1
# Reiniciar o serviço Samba
sudo systemctl restart smbd
O que é RAID?
Benefícios do RAID:
Níveis de RAID:
Exemplo Prático:
# Criar um RAID 1 com mdadm no Linux
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
# Verificar o status do RAID
cat /proc/mdstat
# Adicionar um disco a um RAID existente
sudo mdadm --add /dev/md0 /dev/sdc1
Desafios e Boas Práticas:
smartctl
.O que são Permissões de Arquivos?
Representação Simbólica:
r
– Permissão de leitura (read).w
– Permissão de escrita (write).x
– Permissão de execução (execute).Representação Numérica:
r
= 4w
= 2x
= 1rwx
= 4 + 2 + 1 = 7r-x
= 4 + 0 + 1 = 5r--
= 4 + 0 + 0 = 4Exemplo:
rwxr-xr--
pode ser representada numericamente como 754
:
rwx
(proprietário) = 7r-x
(grupo) = 5r--
(outros) = 4Comandos para Gerenciar Permissões:
chmod
– Alterar permissões:
chmod 755 arquivo
(7 = rwx, 5 = r-x, 5 = r-x).chmod u=rwx,g=rx,o=r arquivo
.chown
– Alterar proprietário e grupo:
chown usuario:grupo arquivo
– Altera o dono e o grupo do arquivo.chown usuario arquivo
– Altera apenas o dono.chown :grupo arquivo
– Altera apenas o grupo.chgrp
– Alterar grupo:
chgrp grupo arquivo
– Altera o grupo do arquivo.Permissões Especiais:
s
na permissão de execução do proprietário (ex: rwsr-xr-x
).chmod u+s arquivo
.s
na permissão de execução do grupo (ex: rwxr-sr-x
).chmod g+s arquivo
.t
na permissão de execução de outros (ex: rwxr-xr-t
).chmod +t diretorio
.Boas Práticas:
chmod 777
, pois concede acesso total a todos os usuários.Exemplo Prático:
# Alterar permissões de um arquivo
chmod 755 script.sh
# Alterar dono e grupo de um arquivo
chown usuario:grupo arquivo.txt
# Aplicar SUID a um arquivo
chmod u+s /usr/bin/programa
# Aplicar Sticky Bit a um diretório
chmod +t /diretorio_compartilhado
- Silberschatz et al., Fundamentos de SOs, 8ª ed., LTC, 2010, Cap. 10.
- Tanenbaum, Sistemas Operacionais: Projetos e Implementações, 3ª ed., Prentice Hall, 2009, Cap. 4.
- Maziero, SOCM, Parte VI: Gestão de Arquivos (link).