Archive for April, 2008
How to Find
Busca por nome de arquivos e/ou diretórios (pode-se realizar busca com expressões regulares)
- Case sensitive
# find / -name “*.sh” -print
# find / -name apache2 -print
# find / -name “[Bb]ind*” -print
- Case insensitve
# find / -iname “*lock*” -print
Busca com dois parâmetros (AND/OR)
- Arquivos .sh e .ksh
# find / \( -name \*.sh -a -name \*.ksh \) -print
- Arquivos .sh ou .ksh
# find / \( -name \*.sh -o -name \*.ksh \) -print
Busca por owner
- User ID
# find / -user www
- Group ID
# find / -group bin
Busca por tipo de permissões
- Octal
# find /usr/sbin/ -perm +0500
# find /usr/sbin/ -perm -0664
# find /usr/sbin/ -perm 0775
- Symbolic
# find /usr/sbin/ -perm +ug=rx
# find /usr/sbin/ -perm -u=rw
# find /usr/sbin/ -perm o=r
Busca apenas no diretório corrente
# find /usr -name “*.txt” -maxdepth 1 -print
Busca no diretório corrente e desce um subdiretório
# find /usr -name “*.txt” -maxdepth 2 -print
Busca apenas no file system corrente (existindo por exemplo um file system /usr/aap, este será excluÃdo da busca)
# find /usr -xdev -name “*.txt” -print
Busca mantendo no diretório corrente (não é preciso utilizar -depth)
# find /usr -name “*.txt” -prune
Busca por tipo
- Somente arquivos
# find / -name apache2 -type f -print
- Somente diretórios
# find / -name apache2 -type d -print
- Somente links
# find / -name apache2 -type l -print
- Arquivos no home do usuário com 2 hard links
# find $HOME -type f -links 2
- Arquivos no home do usuário com mais de 1 hard link
# find $HOME -type f -links +1
Busca por tamanho de arquivo
- Arquivos maiores que 5M
# find / -size +5000 -print
- Arquivos menores que 5M
# find / -size -5000 -print
- Arquivos exatamente igual a 5M
# find / -size 5000 -print
Busca de arquivos por data de: acesso, criação e modificação
- Arquivos acessados com mais de 3 dias
# find /etc -atime +3 -print
- Arquivos acessados com menos de 3 dias
# find /etc -atime -3 -print
- Arquivos modificados com mais de 5 dias
# find /etc -mtime +5 -print
- Arquivos modificados com menos de 5 dias
# find /etc/ -mtime -5 -print
- Arquivos criados com mais de 10 dias
# find /var -ctime +10 -print
- Arquivos criados com menos de 10 dias
# find /var -ctime -10 -print
- Arquivos modificados exatamente há 7 dias
# find /etc -mtime 7 -print
- Arquivos acessados nas útimas 24 horas
# find /etc -atime 0 -print
Busca de arquivos e/ou diretórios com exceção (imprime tudo exceto parâmetro informado)
# find /usr ! -name “*lib*” -print
# find /usr -not -name “*lib*” -print
Busca com execução de comandos na saÃda
- Lista detalhe dos arquivos encontrados (equivalente a opção “ls -dils”)
# find /var/log/ -name “*.log” -ls
- Excluir todos os arquivos no /tmp com mais de 3 dias
# find /tmp/ -ctime +3 -exec rm -rf {} \;
- Excluir todos arquivos no /tmp com extensão .lock sem confirmação
# find /tmp/ -name *.lock -exec rm -rf {} \;
- Exlcluir todos arquivos no /tmp com extensão .lock com confirmação
# find /tmp/ -name *.lock -ok rm -rf {} \;
- Excluir arquivos com nome core (-delete apenas para GNU find)
# find / -name “*core*” -type f -delete
- Compactar todos arquivos no /tmp com extensões .tmp e .bak
# find /tmp/ \( -name \*.tmp -o \*.bak \) -exec gzip {} \;
- Busca arquivos dentro do homedir com permissões 664 e altera para 775
# find $HOME -xdev type f -perm 664 -exec chmod 775 {} \;
Nota: Abaixo seguem alguns exemplos de expressões regulares e formatação do resultado da busca.
- Busca todos arquivos criados com menos de 5 dias, exceto arquivos que contenham “svn” no nome.
# find . -ctime -5 -not -regex ‘.*svn.*’ -print
- Busca arquivos modificados a mais de uma semana e que tenham as extensões .csh ou .ksh
# find . -mtime +7 -regex ‘.*[ck]sh*’
- Formanto da saÃda da busca
# find . -printf “%TY%TW:%p\n”
# find . -printf ‘%TY-%Tm-%Td %TH:%TM:%TS %p\n’
# find . -printf ‘%p %a %m\n’
# find . -printf ‘Name: %16f Size: %6s\n’
Importante: Descrição dos comandos acima.
%Ax – data do último acesso ao arquivo, formato da mesma definido em “x”.
%Tx – data da última modificação do arquivo, formato da mesma definido em “x”.d – dia do mês
D – data (dd/mm/aa)
h – mês (nome)
H – hora
m – mês (número)
M – minutos
S – segundos
T – hora (hh:mm:ss)
w – dia da semana
W – número da semana no ano
y – ano (2 digÃtos)
Y – ano (4 digÃtos)%a – data e hora do último acesso ao arquivo
%f – nome do arquivo (exclui PATH)
%m – permissões do arquivo (symbolic)
%p – nome do arquivo (inclui PATH)
%s – tamanho do arquivo (bytes)\n – quebra de linha
\t – tabulação horizontal
\v – tabulação vertical
OBS.: Neste artigo coloquei os arquivos que tenho utilizado diariamente, pois o comando find tem inúmeras possÃbilidades, para explorá-las, basta dar uma lida no man. E lembrar também que todos os comandos poder ser mesclados, exemplos: busca por extensão de arquivo, permissão e mais de x dias acessados ou, busca por extensão x e y, tamanho e tipo de arquivo e etc…
Comments are off for this postSystem Recovery
Utilizamos o comando make_recovy, que cria uma fita inicializável de recuperação do sistema operacional.
Esta fita pode ser utilização para boot e recuperação de problemas com o root disk ou com o volume group.
O sistema de recuperação consiste de um boot image, seguido por um archive do file system compreendido por um minÃmo core OS.
Minimal OS
# make_recovery
Entire Root Disk
# make_recovery -A
OBS.: Em ambos a fita será criada sem mais interações.
Comments are off for this postGerênciando swap
Para criar-mos uma nova partição raw swap, após criado o device (type swap), adicione a seguinte entrada em /etc/vsftap
/dev/dsk/c0t1d0s0 – – swap – no -
Depois habilitando a nova partição
# swap -a /dev/desk/c0t1d0s0
Pode adicionar uma novo área de swap através de um arquivo de swap.
# mkfile 250m /opt/myswapfile
# swap -a /opt/myswapfile
# echo “/dev/dsk/c0t1d0s0 – – swap – no -” >> /etc/vsftab
Desativando um
swap space
# swap -d /opt/myswapfile
Exibindo informações mais detalhadas da área de swap.
# swap -s
total: 402456k bytes allocated + 97104k reserved = 499560k used, 1643728k available
Neste momento verificamos que o uso real da swap é de 499560k, onde 97104k estão reservados para uso futuro e 402456k é a utilização real no momento.
O espaço livre é de 1643728k.
Para obter detalhes individuais de cada device.
# swap -l
swapfile dev swaplo blocks free
/dev/md/dsk/d20 85,20 16 4202672 3489392
Onde swapfile indica device ou arquivo de swap, a coluna deve informa o maior e menor número para o device e 0 quando for arquivo.
Em blocks temos o tamanho total da swap (blocos de 512 bytes). Finalizando em free é a quantidade de espaço livre na área de swap também em blocos de 512 bytes.
Restaurando backups
Caso necessário, podemos determinando origem de um arquivo de backup.
Archive:
# ufsrestore ta /var/tmp/root.archive ./etc/passwd
Tape:
# ufsrestore tf /dev/rmt/0 ./etc/passwd
Restaurando backup em modo interativo
# cd /var/tmp
# ufsrestore if /dev/rmt/0
ufsrestore> ls
.:
.cpr_config etc/ lost+found/ sbin/ usr/
TT_DB/ export/ mnt/ sccs/ var/
b/ home/ net/ share/ vol/
bin kernel/ opt/ shared/ ws/
dev/ lib platform/ src/ xfn/
devices/ license/ proc/ tmp/
ufsrestore> cd etc
ufsrestore> add passwd shadow
ufsrestore> verbose
verbose mode on
ufsrestore> extract
Extract requested files
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume #: 1
extract file ./etc/shadow
extract file ./etc/passwd
Add links
Set directory mode, owner, and times.
set owner/mode for `.’? [yn] n
ufsrestore> quit
#
Restaurando backup sem modo interativo
Comments are off for this post# ufsrestore xvf /dev/rmt/0 ./etc/passwd ./etc/shadow
Verify volume and initialize maps
Media block size is 126
Dump date: Wed Dec 12 10:54:45 2001
Dumped from: the epoch
Level 0 dump of / on earth:/dev/dsk/c0t1d0s0
Label: none
Extract directories from tape
Initialize symbol table.
Make node ./etc
Extract requested files
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume #: 1
extract file ./etc/passwd
extract file ./etc/shadow
Add links
Set directory mode, owner, and times.
set owner/mode for `.’? [yn] n
Usando UFS Snapshots
Backup é realizado enquanto o file system está montado, onde criamos um read-only file system (imagem de um file system temporário) destinado para operações de backup.
Criando um USF Snapshot, com limite de 500M para o arquivo backing-store
# fssnap -F ufs -o maxsize=500m,bs=/scratch/usr.back.file /export/home
/dev/fssnap/1
Listanto snapshot currente
# /usr/lib/fs/ufs/fssnap -i
Snapshot number : 0
Block Device : /dev/fssnap/0
Raw Device : /dev/rfssnap/0
Mount point : /export/home
Device state : idle
Backing store path : /var/tmp/bs.file
Backing store size : 0 KB
Maximum backing store size : Unlimited
Snapshot create time : Wed Aug 29 15:22:06 2001
Copy-on-write granularity : 32 KB
Para exibir a informação de um determinado file system, basta
# /usr/lib/fs/ufs/fssnap -i /usr
Excluindo um UFS snapshot
# fssnap -i
0 / 1 /usr
# fssnap -d /usr
Deleted snapshot 1.
# rm /scratch/usr.back.file
Realizando backup de um USF snapshot
Para backup full:
# ufsdump 0ucf /dev/rmt/0 /dev/rfssnap/1
Verificando o backup
# ufsrestore tf /dev/rmt/0
Para backup incremental:
# ufsdump 1ufN /dev/rmt/0 /dev/rdsk/c0t1d0s0 `fssnap -F ufs -o raw,bs=/export/scratch,unlink /dev/rdsk/c0t1d0s0`
Verificando o backup
# ufsrestore ta /dev/rmt/0
Realizando backup com tar
Comments are off for this post# mount -F ufs -o ro /dev/fssnap/1 /backups
# tar cvf /dev/rmt/0 /backups
How to UFSDUMP
Primeiro verificamos a quantidade de fitas necessárias para o backup.
O valor retornado é em bytes
# ufsdump S /export/home
489472
Para backup pode utilizar uma das opções abaixo.
0 – para backup full
9 – para backup incremental
u – especifica que o /etc/dumpdates , será atualizado com a data do backup
c – para identificar um cartucho
f – para identificar o tape device
Para backup full:
# ufsdump 0ucf /dev/rmt/0 /
DUMP: Writing 63 Kilobyte records
DUMP: Date of this level 0 dump: Wed Sep 05 13:27:20 2001
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/rdsk/c0t1d0s0 (earth:/) to /dev/rmt/0.
DUMP: Mapping (Pass I) [regular files]
DUMP: Mapping (Pass II) [directories]
DUMP: Estimated 57150 blocks (27.91MB).
DUMP: Dumping (Pass III) [directories]
DUMP: Dumping (Pass IV) [regular files]
DUMP: Tape rewinding
DUMP: 57076 blocks (27.87MB) on 1 volume at 265 KB/sec
DUMP: DUMP IS DONE
DUMP: Level 0 dump on Wed Sep 05 13:27:20 2001
Para backup incremental:
# ufsdump 9ucf /dev/rmt/0 /
DUMP: Writing 63 Kilobyte records
DUMP: Date of this level 9 dump: Fri Jul 13 10:58:12 2001
DUMP: Date of last level 0 dump: Fri Jul 13 10:46:09 2001
DUMP: Dumping /dev/rdsk/c0t0d0s0 (starbug:/) to /dev/rmt/0.
DUMP: Mapping (Pass I) [regular files]
DUMP: Mapping (Pass II) [directories]
DUMP: Mapping (Pass II) [directories]
DUMP: Mapping (Pass II) [directories]
DUMP: Mapping (Pass II) [directories]
DUMP: Estimated 200 blocks (100KB).
DUMP: Dumping (Pass III) [directories]
DUMP: Dumping (Pass IV) [regular files]
DUMP: Tape rewinding
DUMP: 124 blocks (62KB) on 1 volume at 8 KB/sec
DUMP: DUMP IS DONE
DUMP: Level 9 dump on Fri Jul 13 10:58:12 2001
Para checar se um backup foi concluÃdo com sucesso:
Comments are off for this post# ufsrestore tf /dev/rmt/0
2 .
3 ./lost+found
5696 ./usr
11392 ./var
17088 ./export
22784 ./export/home
28480 ./opt
5697 ./etc
11393 ./etc/default
11394 ./etc/default/sys-suspend
11429 ./etc/default/cron
11430 ./etc/default/devfsadm
11431 ./etc/default/dhcpagent
11432 ./etc/default/fs
11433 ./etc/default/inetinit
11434 ./etc/default/kbd
11435 ./etc/default/nfslogd
11436 ./etc/default/passwd
11437 ./etc/default/tar
.
.
.
# (Press Control-d to bring system to run level 3)
Restore Bad Superblock
Quando um file system encontra-se danificado é possÃvel restaura-lo, exceto se o file system for o root (/).
Quando isto acontece é necessário realizar um dos passos abaixo:
- Reinstalar o Sistema Operacional
- Boot da Rede ou CD-Rom
- Recriar o file system root (/) com newfs e restaurá-lo de um backup.
Determinando um bad superblock no file system / ou /usr.
De um CD local realizamos os passos abaixo.
ok boot -s cdrom
Através da rede de um install server
ok boot -s net
Após, desmonte o file system danificado se o mesmo não for o / ou /usr.
# umount /opt
# newfs -N /dev/rdsk/c0t3d0s7
/dev/rdsk/c0t3d0s7: 163944 sectors in 506 cylinders of 9 tracks, 36 sectors
83.9MB in 32 cyl groups (16 c/g, 2.65MB/g, 1216 i/g)
super-block backups (for fsck -b #) at:
32, 5264, 10496, 15728, 20960, 26192, 31424, 36656, 41888,
47120, 52352, 57584, 62816, 68048, 73280, 78512, 82976, 88208,
93440, 98672, 103904, 109136, 114368, 119600, 124832, 130064, 135296,
140528, 145760, 150992, 156224, 161456,
# fsck -F ufs -o b=5264 /dev/rdsk/c0t3d0s7
Alternate superblock location: 5264.
** /dev/rdsk/c0t3d0s7
** Last Mounted on
** Phase 1 – Check Blocks and Sizes
** Phase 2 – Check Pathnames
** Phase 3 – Check Connectivity
** Phase 4 – Check Reference Counts
** Phase 5 – Check Cyl groups
36 files, 867 used, 75712 free (16 frags, 9462 blocks, 0.0% fragmentation)
/dev/rdsk/c0t3d0s7 FILE SYSTEM STATE SET TO OKAY***** FILE SYSTEM WAS MODIFIED *****
#
OBS.: Outras opções para o fsck:
Comments are off for this postfsck -m
verifica se um file system pode ser montado
fsck -y
assume como “yes” para todos os reparos
fsck -n
assume como “no” para todos os reparos
fsck -o p
preens file system, repara todas inconsistências esperadas, mas retorna ao prompt se um sério problema for encontrado.
Check/Repair File System UFS interativamente
Utizamos esta opção quando um file system não pode ser montado ou quando desenvolve inconsistências durante a utilização.
Para ver se um sistema de arquivos precisa ser checado. Utilizarei como exemplo /opt.
# umount /opt
# fsck -m /dev/rdsk/c0t0d0s6
** /dev/rdsk/c0t0d0s6
ufs fsck: sanity check: /dev/rdsk/c0t0d0s6 needs checking
Veremos a mensagem: “needs checking”, então utilizamos o comando abaixo.
# fsck /dev/rdsk/c0t0d0s6
checkfilesys: /dev/rdsk/c0t0d0s6
** Phase 1 – Check Block and Sizes
INCORRECT BLOCK COUNT I=2529 (6 should be 2)
CORRECT? y** Phase 2 – Check Pathnames
** Phase 3 – Check Connectivity
** Phase 4 – Check Reference Counts
** Phase 5 – Cylinder Groups
929 files, 8928 used, 2851 free (75 frags, 347 blocks, 0.6%
fragmentation)
/dev/rdsk/c0t0d0s6 FILE SYSTEM STATE SET TO OKAY***** FILE SYSTEM WAS MODIFIED *****
OBS.: Para desmontar todos os file system exceto / e /usr utilizamos:
Comments are off for this post# umountall -l
Preening UFS File System
Este comando é utilizado para corrigir automaticamente problemas resultantes de um shutdown inexperado do Sistema Operacional. Este comando também realiza um “exit” automático se necessário intervenção do administrador.
Pode ser utilizado em paralelo com outros file systems.
Uma particularidade é que podemos utilizar o comando tanto no mount-point como no device-name.
Por exemplo, preening no file system /usr através do mount-point
# fsck -o p /usr
ou através do device-name, mas neste é necessário desmontar o file system.
Comments are off for this post# umount /mount-point
# fsck -o p /dev/rdsk/device-name