Cópias de Segurança

Hardware é indeterminadamente confiável,
Software é indeterminadamente confiável,
Pessoas são indeterminadamente confiáveis,
Natureza é determinadamente confiável.


O que é importante copiar?

Os dados são valiosos. Eles custam tempo e esforço para serem regerados, e
isso significam despesas ou no mínimo desgaste pessoal e lágrimas, sendo
que algumas vezes, sequer eles podem ser recriados, como por exemplo o
resultado de alguns experimentos. As sim sendo, é um bom investimento
proteger os dados e ter procedimentos que evitem a sua perda. 

Há basicamente quatro razões que provocam a perda de dados: falhas de
hardware, problemas em programas, ação humana e desastres naturais. Apesar
dos hardwares modernos serem mais confiáveis, eles ainda podem Ter panes
espontaneamente e sem aviso prévio. O componente mais crítico de hardware
para armazenamento de dados é o disco rígido, o qual é baseado em que
pequenos campos magnéticos permaneçam intactos em um mundo repleto de
ruídos eletromagnéticos. 

Softwares modernos não tendem a ser mais confiáveis, um programa estável
como uma rocha sólida é uma exceção e não uma regra. Humanos são também
pouco confiáveis, quer pelos erros que possam cometer, quer por tentativas
mal intencionadas de destruir os da dos. A natureza pode não ser
diabólica, porém pode gerar danos, mesmo quando está sendo boa (chuvas,
excesso de calor,...). Bem, no final trata-se de um pequeno milagre que no
final as coisas consigam funcionar. 

Cópias de segurança é uma forma de proteger investimentos em dados.
Tendo-se diversas cópias dos dados, tornará de menor importância se alguns
dados forem perdidos, pois o custo será o de somente restaurar os dados de
uma das cópias. 

É importante fazer-se cópias de maneira adequada. Como tudo o mais
relacionado ao mundo físico, cópias de segurança podem falhar mais cedo ou
mais tarde. Parte do trabalho da geração das cópias de segurança é estar
seguro de que elas funcionam; ninguém go staria de perceber que suas
cópias não funcionam, quando elas forem necessárias. Adicionar mais
problemas a uma perda de dados, somente pode agravar ainda mais a
emergência. Caso se tenha somente uma mídia de cópia de segurança ela
também pode sofrer dano s, sobrando somente a lembrança do grande trabalho
realizado, como por exemplo o banco de dados de usuários com mais de
15.000 registros de clientes, que foi perdido. Mais ainda, a cópia deve
estar funcionando perfeitamente, porém a última unidade de fita s que
consegue ler o tipo de fita da cópia de segurança está cheia de água. 

Quando o tema é cópia de segurança, paranóia é a melhor descrição deste
trabalho. 


Selecionando o dispositivo de cópia de segurança 

A decisão mais importante
sobre cópias de segurança é a opção da mídia a ser utilizada. Ë necessário
considerar custos, confiabilidade, velocidade, disponibilidade e 
utilidade. 
 
A questão custos é importante, uma vez que é preferível ter-se muitas
vezes mais capacidade de armazenamento das cópias do que a quantidade de
dados existentes. Uma mídia econômica é usualmente uma necessidade.

Confiabilidade é extremamente importante, desde que uma cópia com
problemas pode fazer um homem adulto chorar. Uma mídia de cópia de
segurança deve ser capaz de manter os dados em perfeito estado durante
anos. A foram de usar a mídia afeta a sua confiabil idade. Um disco rígido
é normalmente muito confiável, mas como uma mídia para cópias de segurança
pode não sê-lo, caso o mesmo computador esteja gerando as cópias.

Velocidade não é usualmente muito importante, caso a cópia possa ser
realizada de forma não interativa, ou seja não importa que uma cópia de
segurança seja realizada em duas horas, desde que ela possa ser feita sem
assistência. Por outro lado, caso a cópi a não possa ser realizada quando
o computados esteja disponível, então velocidade é um tema importante. 

Disponibilidade é, obviamente, necessária, desde que não se pode usar uma
mídia de cópia de segurança, se ela não existir. Menos óbvia é a
disponibilidade futura e em outros equipamentos diferentes dos que aonde
ela foi gerada. De outra forma pode não ser
 possível  restaurar os dados após algum acidente.
 
Utilidade é um fator abrangente e que se relaciona à periodicidade em que
as cópias são realizadas. A forma mais simples é realizar cópias da melhor
maneira possível, isto é no menor período e com o maior conjunto de dados
possíveis. Uma mídia de cópia nã o deve ser difícil ou trabalhosa de ser
usada. 

As alternativas típicas são disquetes e fitas. Disquetes são extremamente
baratos, relativamente confiáveis, não muito rápidos, de alta
disponibilidade, mas não muito úteis para grandes quantidades de dados.
Fitas são baratas e algumas nem tanto assim, re lativamente confiáveis e
velozes, de média disponibilidade, e, dependendo do tamanho da fita,
bastante confortáveis.

Há algumas outras alternativas,, não muito comuns, mas caso isso não seja
um problema, podem ser uma melhor opção em muitos casos. Por exemplo,
discos óticos podem conter o melhor das duas opções anteriores: têm acesso
randômico, tornando a restauração ma is simples e rápida como os
disquetes, e podem conter uma grande quantidade de dados como as fitas. 

Acrescentaríamos ainda como opções viáveis: discos rígido em outros
equipamentos, CD graváveis e zip drives e similares. 


Selecionando a ferramenta de cópia de segurança 

Há diversas ferramentas
que podem ser utilizadas na geração de cópias de segurança. Uma ferramenta
tradicional em Unix são os utilitários tar, cpio e dump. Adicionalmente
uma série de pacotes de terceiros (alguns de livre distribuição, outros
comerciais_ podem ser utilizados. A opção da mídia pode afetar na escolha
da ferramenta.

tar e cpio são similares, e equivalentes do ponto de vista da cópia de
segurança. Ambas são capazes de guardar dados em fitas, por exemplo, e
restaurá-los. Podem gravar dados em praticamente qualquer mídia, desde que
os arquivos de controle de dispositivo s tomem conta dos acessos de baixo
nível ao equipamento e permitam o acesso de programas de usuários à mídia.
Algumas versões destes programas em alguns sistemas Unix podem ter
dificuldades com arquivos menos usuais (como ligações simbólicas, arquivos
de dispositivos, arquivos com nomes muito longos, e assim por diante),
porém as versões de Linux podem lidar com isso corretamente.

dump é um pouco diferente pois lê o sistema de arquivos diretamente, sem
uso dos mecanismos de indireção. Foi desenvolvido também para a geração de
cópias de segurança; tar e cpio são ferramentas para o arquivamento de
arquivos, apesar de funcionarem tamb ém para cópias de segurança.
 
Ler diretamente o sistema de arquivos traz algumas vantagens. Isso torna
possível gerar as cópias sem afetar a data de acesso dos arquivos; no caso
de tar e cpio é necessário antes montar o arquivo com permissões somente
de leitura. É também mais eficient e, caso seja necessário copiar todo o
sistema de arquivos, uma vez que muito menos movimento das cabeças de
leitura e gravação do disco rígido será exigido. A maior desvantagem é que
é um programa de cópia específico para somente um tipo de sistema de arq
uivos; o programa dump do Linux entende somente os sistemas de tipo ext2. 
dump suporta ainda níveis de cópias, ao passo que tar e cpio tem essa
funcionalidade implementada por outras ferramentas. 

Uma comparação entre softwares fornecidos por terceiros está além do
escopo deste livro, porém uma lista de softwares de livre distribuição
pode ser encontrada no Mapa de Softwares Linux. 



Cópias de segurança simples

Um esquema simples de cópia de segurança é copiar tudo uma única vez e
após copiar somente os arquivos que sofreram alterações após a cópia
inicial. A primeira cópia é denominada cópia total e as seguinte cópias
incrementais. Uma cópia total é normalmente
 mais trabalhosa que a incremental, uma vez que muito mais dados são
gravados e pode eventualmente não caber em uma única fita, disquete, ou
qualquer que seja a mídia utilizada. A restauração de uma cópia
incremental pode ser muitas vezes mais trabalhosa do que de uma cópia
total. A restauração pode ser otimizada desde que sempre se copie tudo o
que foi alterado desde a última cópia total; desta forma as cópias podem
ser um pouco mais trabalhosas e demoradas, mas nunca será necessário
restaurar mais que d uas cópias (total e incremental). 

Caso se deseje realizar cópias diárias e se tenha seis fitas, por exemplo,
pode-se fazer uma cópia total inicialmente (digamos na sexta-feira), e
pode-se utilizar as fitas 2 a 5 para cópias incrementais (de segunda-feira
a quinta-feira). Faz-se então uma nova cópia total com a fita 6 na segunda
sexta-feira, e reinicia-se o ciclo incremental com as fitas 2 a 5. Não é
necessário regravar a fita 1 até que uma nova cópia total seja gerada.
Após a geração da cópia total na fita 6, pode-se manter a fita 1 em al gum
outro local, assim se o conjunto de fitas for perdido em um incêndio, por
exemplo, ao menos algo terá restado. Ao fazer-se uma nova cópia total ,
utiliza-se a fita 1 e a fita 6 toma o seu lugar. 
 
Caso se disponha de mais de 6 fitas, pode-se usar as fitas extras para
cópias completas. A cada vez que seja feito uma nova cópia total,
utiliza-se sempre a mais antiga. Desta forma pode se ter cópias de várias
semanas anteriores , o que pode ser útil cas o se deseje encontrar um
arquivo antigo que foi apagado ou uma versão antiga de algum arquivo
presente. 




Cópias de segurança com tar

Uma cópia de segurança completa pode ser facilmente gerada com o comando tar:

     # tar -create -file /dev/ftape /usr/src 
     tar: Removing leading / from absolute path names in the archive 
     # 

O exemplo acima utiliza a versão GNU do comando tar e sua opção para
utilização de nomes longos. A versão tradicional de tar somente entende
opções descritas através de um único caracter. A versão GNU pode ainda
lidar com cópias de segurança que não caiba m em uma única fita ou
disquete, assim como com caminhos longos, porém nem todas as versões podem
fazer isso (Linux somente utiliza o GNU tar). 

Caso a cópia não caiba em uma única fita, por exemplo, é necessário ativar
a opção multi-volume (-M):

     # tar -cMf /dev/fd0H1440 /usr/src 
     tar: Removing leading / from absolute path names in the archive 
     Prepare volume #2 for /dev/fd0H1440 and hit return: 
     # 

Observe que deve-se formatar os disquetes antes de iniciar a cópia, ou
ainda usar outra janela ou terminal virtual e fazê-lo assim que o tar
solicitar um novo disquete. 

Após a geração da cópia, deve-se verificar se tudo esta em perfeitas
condições. Pode-se fazer isso utilizando a opção -compare (-d):

     # tar -compare -verbose -f /dev/ftape 
     usr/src/ 
     usr/src/linux 
     usr/src/linux-1.2.10-includes/ 
     .... 
     # 

Não executar a checagem significa que não se perceberá que as cópias não
funcionam até que elas sejam necessárias.  Uma cópia incremental pode ser
feita com o comando tar utilizando-se a opção newer (-N):

# tar -create -newer '8 Sep 1998' -file /dev/ftape /usr/src -verbose 
     tar: Removing leading / from absolute path names in the archive 
     usr/src/ 
     usr/src/linux-1.2.10-includes/ 
     usr/src/linux-1.2.10-includes/include/ 
     usr/src/linux-1.2.10-includes/include/linux/ 
     usr/src/linux-1.2.10-includes/include/linux/modules/ 
     usr/src/linux-1.2.10-includes/include/asm-generic/ 
     usr/src/linux-1.2.10-includes/include/asm-i386/ 
     usr/src/linux-1.2.10-includes/include/asm-mips/ 
     usr/src/linux-1.2.10-includes/include/asm-alpha/ 
     usr/src/linux-1.2.10-includes/include/asm-m68k/ 
     usr/src/linux-1.2.10-includes/include/asm-sparc/ 
     usr/src/patch-1.2.11.gz 
     # 

Infelizmente, tar não pode perceber quando somente uma informação no inode
foi modificada, como por exemplo, alteração de permissões de acesso, ou
quando somente o nome foi alterado. Isso pode ser feito usando-se o
comando find e comparando o sistema de a rquivos atual com a lista de
arquivos copiados previamente. Scripts e programas que executam essas
tarefas podem ser encontrados em sites FTP Linux. 



Restaurando arquivos com tar

Deve-se usar a opção -extract (-x) para restaurar arquivos copiados com o
comando tar. 

     # tar -extract -same-permissions -verbose -file /dev/fd0H1440 
     usr/src/ 
     usr/src/linux 
     usr/src/linux-1.2.10-includes/ 
     usr/src/linux-1.2.10-includes/include/ 
     usr/src/linux-1.2.10-includes/include/linux/ 
     usr/src/linux-1.2.10-includes/include/linux/hdreg.h 
     usr/src/linux-1.2.10-includes/include/linux/kernel.h 
     ... 
     # 

Pode-se ainda extrair somente arquivos e diretórios específicos (inclusive
seus subdiretórios), bastando nominá-los na execução do comando:

     # tar xpvf /dev/fd0H1440
usr/src/linux-1.2.10-includes/include/linux/hreg.h
     usr/src/linux-1.2.10-includes/include/linux/hreg.h 
     # 


Pode-se usar a opção -list (-t), caso se queira saber quais são os
arquivos presentes na cópia:

     # tar -list -file /dev/fd0H1440 
     usr/src/ 
     usr/src/linux 
     usr/src/linux-1.2.10-includes/ 
     usr/src/linux-1.2.10-includes/include/ 
     usr/src/linux-1.2.10-includes/include/linux/ 
     usr/src/linux-1.2.10-includes/include/linux/hdreg.h 
     usr/src/linux-1.2.10-includes/include/linux/kernel.h 
     ... 
     # 

Note-se que tar sempre lê o volume seqüencialmente, tornando-se um pouco
lento em grandes volumes. De qualquer forma, ao se utilizar mídias como
fitas ou outras seqüenciais, não é possível utilizar acessos randômicos. 

tar não consegue lidar adequadamente com arquivos apagados. Caso se
necessite restaurar um sistema de arquivos de uma cópia de segurança total
e de uma incremental, e algum arquivo foi apagado entre as duas cópias,
ele estará presente após a restauração. Isso pode ser um grande problema,
caso o arquivo contenha dados sensíveis que não mais deveriam estar
disponíveis. 


Cópias em diversos níveis

O método de cópia simples descrito na seção anterior é muitas vezes
bastante adequado para uso pessoal ou pequenas corporações. Para tarefas
mais complexas o uso de cópias multinível pode ser mais adequada.

O método simples tem dois níveis: cópia completa e cópias incrementais.
Isso pode ser generalizado para qualquer número de níveis. Uma cópia
completa pode ser de nível 0, e os diferentes níveis incrementais podem
ser 1, 2, 3,... e assim por diante. A cada
 cópia incremental podem ser copiado tudo o que foi alterado desde a cópia
anterior de mesmo nível. 

O propósito deste procedimento é permitir um maior histórico de cópias de
forma econômica. No exemplo da seção anterior o histórico das cópias
remontava à última cópia total. Isso pode ser estendido ao se ter mais
fitas disponíveis, e mesmo com somente u ma nova fita por semana, pode ser
um pouco dispendioso. Um histórico maior pode ser útil, uma vez que
arquivos corrompidos ou apagados podem passar desapercebidos por longos
períodos. Mesmo um aversão não muito atualizada de um arquivo pode ser
melhor que
 nenhuma.   

Com cópias de segurança multinível, o histórico pode ser estendido de
forma mais econômica. Por exemplo, caso se tenha 10 fitas disponíveis,
pode-se usar as fitas 1 e 2 pata cópias mensais (primeira sexta-feira de
cada mês), fitas 3 a 6 para cópias semana is (as demais sextas-feiras do
mês; sendo mais quatro unidades uma vez que um mês pode conter até 5
sextas-feiras); e 7 a 10 para cópias diárias (de segunda-feira a
quinta-feira). Adicionando-se somente quatro fitas, pode-se estender o
histórico de cópias
 de duas semanas para dois meses. É verdade que não se pode restaurar
todas as versões de cada arquivo durante dois meses, mas o que é possível
restaurar é normalmente bom o suficiente. 



A figura a seguir mostra qual o nível de cópia usado em cada dia, e quais
cópias podem ser restauradas a partir do fim do mês

  
Figura 10.1: exemplo de esquema de cópia de segurança multinível


Níveis de cópias podem também ser usados para minimizar o tempo de
restauração de sistemas de arquivos. Caso se tenha muitas cópias
incrementais com um número de níveis muito grande, pode-se necessitar
restaurar todos eles para reconstruir um sistema de a rquivos. Ao invés
disso pode-se usar um número de níveis mais adequado ao número de cópias
necessárias para a restauração. 

Para minimizar o número de fitas necessárias para restaurar, pode-se usar
um menor nível de fitas incrementais. Porém o tempo necessário para
realizaar as cópias cresce (a cada cópia pode ser copiado tudo que tenha
sido alterado desde a última cópia total ). Um esquema melhor é sugerido
na página de manual on-line da ferramenta dump e apresentado na tabela
acima. O uso de diferentes níveis de cópias: 3, 2, 5, 4, 7, 6, 9, 8,
9...mantém tanto o tempo de realização das cópias e de restauração em
níveis menore s.  O máximo que se copia são dois dias. O número de fitas a
serem restauradas depende do intervalo entre as cópias completas, mas
certamente será menor que nos esquemas mais simples. 



  
Figura 10.2: esquema mais eficiente de cópias utilizando diferentes níveis
de cópias

Um esquema mais inteligente pode reduzir a quantidade de trabalho
necessário, mas não significa que há menos coisas para acompanhar. O
administrador deve decidir se isso vale ou não à pena. 

A ferramenta dump tem suporte a cópias em multinível, já os comandos tar e
cpio podem Ter essa facilidade implementada através de scripts. 



O que copiar

Pode-se desejar copiar tudo o que for possível. A maior exceção são
softwares que podem ser facilmente restaurados, mas mesmo eles podem
conter arquivos de configuração que devem ser copiados, poupando a tarefa
de reconfigurá-los. Outra exceção é o sistem a de arquivos /proc; uma vez
que ele contém somente informações que o kernel gera automaticamente, logo
não é uma boa idéia copiá-lo, especialmente o arquivo /proc/kcore que é
somente uma cópia da memória física, alé de ser bastante grande. 

Áreas cinzentas incluem filas de impressão, arquivos de históricos (logs)
e muitas outras coisas em /var. O administrador deve decidir sobre o tema,
uma vez que o seu conteúdo pode justificar a realização de cópia. 

As coisas óbvias que devem estar presentes são os arquivos de usuários
(/home) e os arquivos de configuração do sistema (/etc), mas certamente
haverá outras coisas espalhadas por todos os sistemas de arquivos. 



Arquivos compactados

Cópias de segurança costumam utilizar muito espaço, o que pode ser
dispendioso. Para reduzir o espaço necessário, as cópias podem ser
comprimidas. Há diversas formas de se fazer isso. Alguns programas tem
suporte à compressão,; por exemplo a opção -gzip ( -z) do GNU tar conecta
ao arquivo gerado com o programa de compressão gzip, antes de gravar o
arquivo na midia. 

Infelizmente arquivos comprimidos podem causar certos problemas, dada à
natureza de como a compressão funciona. Caso um simples bit esteja com
problemas, todo o restante do arquivo comprimido pode estar inutilizado.
Alguns programas de cópias tem algumas facilidades de correção, mas não há
nenhum método de lidar com um grande número de erros. O que significa que
se uma cópia é feita de forma comprimida através do GNU tar, com a saída
sendo um único grande arquivo comprimido, um simples erro pode tornar to
do o restante da cópia inútil. Cópias de segurança têm que ser confiáveis,
e este método de compressão não parece ser uma boa idéia. 

Uma forma alternativa é comprimir os arquivos separadamente. Isso
significa que se um arquivo contiver, os demais não sofrerão os efeitos
colaterais. O arquivo perdido poderia de qualquer forma conter algum tipo
de erro, então essa situação não parece ser menos favorável do que não
utilizar nenhuma compressão. O programa afio (uma variante do cpio) pode
trabalhar desta forma. 

Compressão leva algum tempo, o que pode tornar o programa de cópia incapaz
de gravar os dados com a velocidade suficiente em uma fita, por exemplo.
Isso pode ser evitado através do armazenamento temporário da saída
(buffers de memória), de forma interna s e o programa de cópia tem essa
funcionalidade disponível, ou através da utilização de outro programa. 
Isso somente se aplica a computadores muito lentos ou sobrecarregados
durante a geração da cópia de segurança. 



Manutenção de Data/Hora

  
"Terra,
Vagabundeando, matas o tempo,
Bailarina láctea, ébria,
Giras com teus minúsculos hóspedes,
Debruçados em tuas costas...."
A Nova Poesia Brasileira - Sandro N. Henrique - 1983

Este capítulo explana como o sistema Linux mantém a data e a hora, e o que
é necessário para evitar problemas. Usualmente, não é necessário executar
qualquer atividade, mas é importante entender o seu funcionamento. 

           Zonas de Tempo
           Os relógios de hardware e software
           Apresentando e acertando a data e a hora
           Quando o relógio está errado




Zonas de tempo


A medição do tempo é baseada no fenômeno regular de alternância de
períodos de luz e escuridão causada pela rotação do planeta. O tempo total
decorrido entre os períodos é constante, porém os períodos de luz e
escuridão podem variar. Uma constante simples
 é o meio-dia.

O meio-dia é o ponto do dia em que o Sol está em sua posição culminante,
Uma vez que a terra é redonda, o meio-dia acontece em diferentes horários
em diferentes lugares. Isso leva ao conceito de horário local.. O homem
mede o tempo em muitas unidades, mui tas das quais estão atreladas a
fenômenos como o meio-dia. Quanto mais se esteja em um mesmo local menor
importância tem as diferenças entre os horários locais. 

Assim que seja necessário comunicar-se com outros locais distantes,
notar-se-á a necessidade de um horário comum. Nos tempos modernos, muitos
locais no mundo passaram a comunicar-se entre si, sendo necessário um
padrão mundial de medida de tempo. O horário conhecido como tempo ou
horário universal (UT ou UTC), formalmente conhecido co mo o tempo medido
em Greenwich ou GMT (Greenwich Mean Time), é baseado no horário local de
Greenwich, uma localidade da Inglaterra. Quando alguém com um diferente
horário local necessita comunicar-se, ele pode expressar o tempo através
do horário universa l, ficando assim mais claro as informações sobre seu
horário local. 

Cada horário local é chamado de fuso horário. Enquanto que
geograficamente seja possível que vários locais tenham o meio-dia ao mesmo
tempo e portanto tenham a mesma fuso horário, politicamente nem sempre
isso é possível. Por diversas razões países adot am diferentes horários,
como por exemplo horários de verão, para atender a demandas econômicas.
Porém alguns países podem não adotar estes procedimentos, e outros podem
mudar suas regras de ano para ano. Isso faz com que algumas conversões de
zonas de tem po não sejam definitivamente triviais. 

Zonas de tempo são melhor denominadas através da localização ou da
diferença entre o local e o horário universal. Nos Estados Unidos e em
alguns outros países, as fusos horários tem um nome e três letras na sua
abreviação. As abreviações não são únicas, p orém não deveriam ser
utilizadas desacompanhadas do nome do país. É melhor referir-se ao
horário, digamos em Helsinki, do que no horário do Leste Europeu, uma vez
que nem todos os países daquela região adotam as mesmas regras. 
 
Linux tem um pacote de fusos horários que reconhece todas as zonas de
tempo existentes, e pode ser mudado facilmente à medida que as regras
mudem. Todos os administradores de sistemas necessitam selecionar uma zona
de tempo apropriada. Cada usuário também pode configurar sua fuso horário
própria, o que pode ser importante uma vez que muitas pessoas trabalham
com computadores através da Internet. Quando as regras, por exemplo de
horário de verão, mudam mo horário local é importante ajustar o horário
tamb ém no sistema. 




Os relógios de hardware e software

Um computador pessoal tem uma relógio mantido por uma bateria. Essa
bateria garante que o relógio funcionará mesmo que o restante do
computador esteja desligado ou não haja eletricidade disponível. O relógio
de hardware pode ser ajustado através da tela d e configuração da BIOS ou
de qualquer sistema operacional que esteja sendo executado. 

O kernel do Linux acompanha o tempo independentemente do relógio de
hardware. Durante a inicialização, o Linux configura seu próprio relógio
para o mesmo horário que o relógio de hardware. Após isso o relógio do
sistema corre independentemente. Linux mant ém o seu próprio relógio
porque é complicado e lento verificar o horário no relógio de hardware a
todo instante. 

O relógio do kernel apresenta sempre o horário universal. Desta forma não
tem que saber absolutamente nada sobre as fusos horários, fazendo com que
a simplicidade torne o tempo do sistema mais confiável e fácil de
atualizar. Cada processo lida com as conv ersões de fusos horários de
forma independente (utilizando ferramentas padrões que fazem parte do
pacote de fusos horários).

O relógio de hardware pode estar nos formatos de horário local e horário
universal. Normalmente, é melhor mantê-lo no formato de horário universal,
porque não será necessário atualizar o hardware quando o horário de verão
começar ou terminar (UTC não tem horário de verão). Infelizmente alguns
sistemas operacionais para PCs, incluindo MS-DOS, Windows, OS/2, assumem
que o hardware mostra o horário local, tendo-se então que alterar o
relógio do hardware para apresentar o horário correto.


Apresentando e acertando a data e a hora

Em um sistema Debian, o sistema de fuso horário é definido por uma
ligação simbólica com o arquivo /etc/localtime. Essa ligação aponta para
um arquivo de dados de fuso horário que descreve a zona de horário local.
Os arquivos de dados de fuso horário e stão armazenados em
/usr/lib/zoneinfo. Outras distribuições podem apresentar diferenças
(CRHL?).

Um usuário pode alterar a sua fuso horário privada através da variável de
ambiente TZ. Caso ela não esteja inicializada, a fuso horário do sistema
é assumida. A sintaxe da variável TZ é descrita na página de manual do
comando tzset (3). 

O comando date apresenta a data atual e o horário corrente. Por exemplo:
 

     $ date 
     Sun Oct 14 21:53:41 EET DST 1998 
     $ 


Isso significa Domingo, 14 de outubro de 1998, aproximadamente 10 minutos
para as 10 horas da noite, e a fuso horário EET DST significa Leste
Europeu em Horário de Verão (East European Daylight Savings Time). O
comando date pode apresentar ainda o horári o universal. 

     $ date -u 
     Sun Oct 14 18:53:42 UTC 1998 
     $ 

date é também usado para obter o horário do relógio do kernel do sistema: 

     # date 07142157 
     Sun Oct 14 21:57:00 EET DST 1998 
     # date 
     Sun Oct 14 21:57:02 EET DST 1998 
     # 

Veja a página de manual on-line do comando date para maiores detalhes - a
sintaxe pode ser um pouco complexa. Somente o superusuário (root) pode
ajustar a hora do sistema. Enquanto cada usuário pode ter a sua própria
fuso horário, o relógio é o mesmo par a todos.

date apresenta somente as configurações do relógio do sistema. O comando
clock sincroniza os relógios de software e hardware. Ele é utilizado
quando o sistema é inicializado, para ler o relógio do hardware e
atualizar o relógio do sistema. Caso seja nece ssário ajustar ambos os
relógio, primeiro deve-se ajustar o relógio do software através do comando
date e após o relógio de hardware através do comando clock -w.

A opção -u diz ao relógio que o que o relógio de hardware está no formato
universal. Deve-se usar a opção -u com cuidado, caso contrário o
computador ficará um tanto confuso sobre o horário correto. 

O relógio deve ser alterado com cuidado. Muitas partes de um sistema Unix
necessitam do relógio para funcionarem corretamente. Por exemplo, o
programa residente cron executa comandos periodicamente. Caso o relógio
seja alterado, ele pode ficar um pouco co nfuso sobre a necessidade ou não
de executar determinado comando. Nos sistemas Unix mais antigos, quando
alguém mudasse o relógio para vinte anos no futuro, o cron tentaria
executar todos os comandos periódicos dos próximos vinte anos de uma única
vez. V ersões atualizadas do cron podem lidar com isso corretamente, mas
ainda deve-se Ter muito cuidado. Grandes saltos ou atrasos no relógio
podem ser mais perigoso que pequenos adiantamentos no relógio. 




Quando o relógio está errado

O relógio de software do Linux não está sempre exatamente correto. Ele é
mantido por interrupções de tempo periódicas geradas pelo hardware. Caso o
sistema tenha muitos processos sendo executados, pode levar um intervalo
de tempo maior até que a interrupç ão de tempo seja gerada, e o relógio de
software pode estar ligeiramente atrasado. O relógio de hardware é
executado de forma independente do sistema e estará portanto funcionando
de maneira mais acurada. Caso o sistema seja inicializado freqüentemente
(e neste caso ele provavelmente não esteja funcionando como um servidor),
o relógio deve estar praticamente correto. 

Caso seja necessário ajustar o
relógio de hardware, o mais simples será reinicializar o computador,
acessar a tela da configuração da BIOS e
 ajustá-lo. Isso evita qualquer problema que a mudança de tempo possa
causar ao sistema. Caso executar a mudança via BIOS não seja uma
alternativa viável, ajuste o novo horário com os comandos date e clock
(nesta ordem), porém prepare-se para reinicializa r o sistema, casos
alguns procedimentos estranhos comecem a ocorrer.  

Um computador conectado
em rede (mesmo que somente através de um modem) pode checar o relógio
automaticamente, comparando-o com o horário de outros computadores. Caso o
outro computador seja conhecido pela acuidade de seu horário, então ambos
podem manter um horário ajustado. Isso pode ser feito através dos comandos
rdate e netdate. Ambos verificam o horário de um computador remoto
(netdate pode lidar com diversos computadores remotos), e podem ajustar o
horário do computador local. Ao executar um desses comandos regularmente,
o computador local terá um horário tão ajustado quanto o computador
remoto. 

Veja ainda informações sobre o comando NTP. 



Medidas de Segurança   

Este apêndice contém uma parte de um interessante programa para medir
potenciais problemas em um sistema de arquivos. O livro contém os fontes
completos do programa (sag/measure-holes/measure-holes.c).

int process(FILE *f, char *filename) {
        static char *buf = NULL;
        static long prev_block_size = -1;
        long zeroes;
        char *p;

        if (buf == NULL || prev_block_size != block_size) {
                free(buf);
                buf = xmalloc(block_size + 1);
                buf[block_size] = 1;
                prev_block_size = block_size;
        }
        zeroes = 0;
        while (fread(buf, block_size, 1, f) == 1) {
                for (p = buf; *p == '\0'; )
                        ++p;
                if (p == buf+block_size)
                        zeroes += block_size;
        }
        if (zeroes > 0)
                printf("%ld %s\n", zeroes, filename);
        if (ferror(f)) {
                errormsg(0, -1, "read failed for `%s'", filename);
                return -1;
        }
        return 0;
}



Glossário

" A Biblioteca da Universidade de Unseen
decidiu unilateralmente ajudar o entendimento
produzindo um dicionário Orangotango/Humano
Ele trabalhou nisso por três meses
Não foi fácil e ele chegou até `Oook`."
 (Terry Pratchett, ``Men At Arms'')

Este é uma pequena lista de palavras e definições relacionados com o Linux
e com administração de sistema.  Ambição O ato de escrever frases
interessantes na esperança de vê-las nos arquivos Linux. 
 
aplicativo 

Software que executa alguma atividade útil. Os resultados de um
programa aplicativo são a razão primeira de usar-se um computador. Veja
também programas de sistema e sistema operacional. 

Programa residente

(daemon)  Um processo executado em segundo plano, normalmente sem ser
notado, até que algum evento acione a sua ação. Por exemplo, o programa de
atualização acorda a cada trinta segundo e esvazia o cache de dados, e o
programa residente de correio eletrônico (sendmail) acorda toda vez que
uma mensagem é enviada. 

Sistema de arquivos (file system) 

Os métodos e as
estruturas de dados que um sistema operacional utiliza para manter
controle dos arquivos em um disco ou partição; a forma pela qual os dados
estão organizados no disco. Também usado para referenciar-se uma partição
ou disco que é usado par a armazenar os arquivos de um determinado tipo de
sistema de arquivos.  

Glossário 
Lista de palavras sobre um determinado
tema e suas respectivas explanações sobre seus conceitos. Não confundir
com um dicionário que pode ser mais abrangente.  

Núcleo (kernel) 

Parte do
sistema operacional que implementa a interação entre o hardware e rotinas
de compartilhamento de recursos. Veja também programas de sistema. 


Sistema Operacional 
Software capaz de administrar o compartilhamento dos
recursos do computador (processador, memória, espaço em disco, banda de
rede, e assim por diante) entre os diversos usuários e os programas
aplicativos que eles executam. Veja também kernel, programas d e sistema,
aplicativos.  

Chamadas de sistema 

Os serviços disponibilizados pelo kernel
para os programas aplicativos, e a forma como eles são chamados. Veja a
seção 2 das páginas de manual on-line.  

Programas do sistema 

Programas que
implementam funcionalidades de alto nível de um sistema operacional, como
por exemplo, coisas que não dependem diretamente do hardware. Podem
requerer algumas vezes privilégios especiais para sua execução (por
exemplo, a entrega de correio e letrônico), mas que freqüentemente agem
como parte do sistema operacional (por exemplo um compilador). Veja também
aplicativos, kernel, sistema operacional. 

Referências

Lista de Dispositivos Linux de Peter Anvin: uma lista dos dispositivos
Linux , incluindo os fontes do kernel. 

Bootdisk HOWTO de Graham Chapman. Disponível na lista de HOWTOs Linux.

Guia de Administração de Rede de Olaf Kirch. 

Estrutura de Sistemas de Arquivos Linux de Daniel Quinlan, Release 1.2,
Março de 1995. Uma descrição e uma proposta da árvore de diretórios Linux,
com a intenção De tronar mais simples o empacotamento de softwares e a
administração de sistemas Linux, fazendo com que arquivos apareçam em
locais padrões. Segue muito de perto os sistemas Unix tradicionais, e
obteve suporte de várias distribuições. Disponível via FTP em
ftp.funet.fi, diretório /pub/Linux/doc/fsstnd

Defragmentador de Sistemas de Arquivos Linux. Disponível eletronicamente
em ftp://sunsite.unc.edu/pub/Linux/system/Filesystems/defrag-0.6.tar.gz. 

Guia de Instalação e Primeiros Passos com Linux 





Sobre este documento

Guia de Administração de Sistemas Linux Este documento foi gerado
usando-se o conversoe LaTeX2HTML, versão 96.1-h (30 de Setembro de 1996)
Copyright (c) 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based
Learning Unit, University of Leeds. 

Esta versão foi iniciada por Lars Wirzenius em 15 de novembro de 1997.

A tradução, adaptações e inclusões foram realizadas pela Conectiva
Consultoria e Desenvolvimento de Sistemas Ltda. e estão disponíveis sob as
cláusulas da Licença Pública GNU.
