Então pessoal o comando do qual o Igor passou para descobrrimos o que faz é o seguinte:
Comando:
:%s/abc/def/
Serve para fazer o seguinte:
Ele é uma expressão no Vi que faz a substituição da primeira palavra pela segunda mais em todos texto. Tipo todoas as palavras abc serão transcrevidas para def.
Bem no mais é isso até amanhã pessoal.
Jovens Talentos
domingo, 1 de agosto de 2010
sábado, 31 de julho de 2010
The world of Vi (ou pelo menos um pouquinho)
Introdução ao Vi
O VI é um dos editores de texto mais populares nos sistemas de tipo Unix (com Emacs e Pico) apesar da sua ergonomia muito limitada. Sob Linux, existe uma versão livre de Vi chamada Vim (VI Improved). VI (pronuncia-se Vihaie) é um editor inteiramente em modo texto, o que significa que cada uma das ações se faz com a ajuda de comandos texto. Este editor, embora pouco prático à primeira vista, é muito potente e pode ser muito útil no caso de falha do interface gráfico.
A sintaxe para lançar o VIié a seguinte :
vi nom_du_fichier
Uma vez o ficheiro aberto, é possível deslocar-se com a ajuda dos cursores, bem como as teclas h, j, k e l (no caso do teclado não possuir teclas com flechas).
Os modos Vi
O Vi possui 3 modos de funcionamento :
• O modo normal : aquele no qual está aquando da abertura do ficheiro. Permite escrever comandos
• O modo inserção : Este modo permite inserir os caracteres que digita dentro do documento. Para passar para modo inserção, basta carregar na tecla INSERT do seu teclad ou, na falta desta, na tecla i
• O modo de substituição : Este modo permite substituir o texto existente pelo texto que escreve. Basta pressionar a tecla r para passar para o modo substituição, e carregar na tecla Escape para voltar ao modo normal
Os comandos básicos
Comando - Descrição
:q - Sai do editor (sem salvar)
:q! - Obriga o editor a fechar sem salvar (ainda que tenham sido feitas modificações no documento)
:wq - Salva o documento e sai do editor
:filenom - Salva o documento com o nome especificado
Os comandos de edição
Comando - Descrição
x - Apaga o carácter actualmente sob o cursor
dd - Apaga a linha actualmente sob o cursor
dxd - Apaga x linhas a partir da actualmente sob o cursor
nx - Apaga n caracteres a partir do actualmente sob o cursor
x>> - Faz um espaçamento em x linhas para a direita a partir da actualmente sob o cursor
x<< - Faz um espaçamento em x linhas para a esquerda a partir da actualmente sob o cursor
A investigação e a substituição
Para procurar uma palavra num documento, basta (em modo normal) que escreva /seguido da cadeia a procurar, seguidamente validar com a tecla ENTER. É então possível ir de ocorrência em ocorrência graças à tecla n.
Para substituir uma cadeia de carácter por outra numa linha, existe um comando muito potente no Vi que utiliza as expressões regulares. Eis a sua sintaxe:
:s/chaine_a_remplacer/chaine_de_remplacement/
É possível generalizá-lo a todo o documento graças à sintaxe:
:%s/chaine_a_remplacer/chaine_de_remplacement/
Copiar-colar e cortar-colar
É possível, no Vi, copiar-colar uma selecção de linhas. Para o efeito, só tem de escrever o comando para copiar n linhas:
nyy
Por exemplo, o comando seguinte copiará no tampão 16 linhas :
16yy
Para colar a selecção, basta escrever a letra p.
Cortar-colar n linhas far-se-á de maneira similar com o comando:
ndd
E de seguida p para colar!
Para aqueles que são principiantes no Linux e querem mexer no VI, aí vão alguns comandos dele.
Para acessar algum arquivo de texto no vi, digite na linha de comando do Linux o seguinte:
$ vi exemplo
Onde exemplo é o nome do arquivo.
Logo depois você estará no modo comando. Agora é só se divertir com os comandos a seguir:
Cursor:
• k : para cima
• backspace: esquerda
• space: direita
• j: para baixo
Toda vez que desejar voltar ao modo comando, pressione a tecla ESC.
Movimentação de palavra:
• w : pula uma palavra
• b : volta uma palavra
• c : vai para o fim da palavra
• ex: 2w - pula duas palavras
• $ : vai para o fim da linha
• ^ ou O - vai para o início da linha
Controle do cursor:
• G - final do arquivo
• #G - vai para uma linha qualquer
• :# - vai para uma linha
• Ctrl g - informa a linha que você foi
• Ctrl b - retorna página
• Ctrl f - avança página
• Ctrl u - retorna metade da página
• Ctrl d - avança metade da página
• Ctrl I - refresh da tela
• L - última linha da tela
• M - meio da linha na tela
• H - início da tela
Modo de entrada:
• a - acrescenta texto depois do cursor
• i - insere texto antes do cursor
• o - abre uma linha de texto abaixo
• O - abre uma linha de texto
• A - acrescenta texto no fim da linha
• I - insere texto no início da linha
Deletando texto:
• x - deleta um caracter
• dw - deleta palavra
• ex: 2dw - delete duas palavras
• dd - deleta linha corrente
• dG - deleta até a última linha do arquivo
• d$ - deleta até o fim da linha
• d^ - deleta até o início da linha
Movendo texto:
Primeiro executar o comando deletar, depois executar o colar:
• p - cola abaixo do cursor
• P - cola acima do cursor
Copiando texto:
• yw - copia palavra corrente
• yy - copia a linha corrente
• yG - copia até a última linha do arquivo
• y$ - copia até o fim da linha
• y^ - copia até o início da linha
Alterando o texto:
• r - substitui caracter
• R - substitui todas as letras até pressionar ESC
• cw - altera palavra
• cc - altera a linha inteira
• cG - altera até a última linha do arquivo
• c$ - altera até o fim da linha
Tunelamento de SSH
Eventualmente estamos em lugares onde precisamos acessar alguma página e sempre tem aquele proxy chato que não deixa acessar. Com tunelamento via SSH é possível acessar servidores externos sem se preocupar. Este mecanismo pode ser uma boa quando se precisa de acesso seguro e ter a certeza que ele não será "sniffado" na rede.
O mecanismo funciona da seguinte maneira:
* Estabelece-se um túnel entre a sua máquina e a máquina servidora;
* Este túnel é feito utilizando algoritmos de chave pública e privada, garantindo total privacidade dos dados que trafegam por ali.
O que é necessário:
* Máquina servidora com SSH instalado e funcionando
* A máquina cliente com cliente SSH
Mãos na massa:
Vou partir do princípio que você já tenha um servidor SSH instalado e funcionando. Há vários tutoriais na net que explicam como instalar. Eu por exemplo uso o Ubuntu e instalei usando o comando:
# apt-get install ssh
Configurando o cliente no Linux
1. Abra o shell e digite o comando:
$ ssh@ -D 6000
2. A primeira vez o Linux irá perguntar se deseja salvar o host na lista de hosts conhecidos, informe yes.
3. Informe o password e pronto, nosso túnel já está estabelecido!
4. Agora abra o seu navegador (eu uso o Firefox), vá em Editar > Preferências;
5. Na aba rede, clique no botão configurar;
6. No campo acesso a internet, selecione a opção: "Configuração manual de proxy";
7. No campo SOCKS, informe localhost e na porta, informe 6000;
8. Clique em aplicar.
Para quem está do lado negro da força, configurando no Windows:
1. Baixe o aplicativo Putty e o execute;
2. Selecione a opção "Session";
3. Informe o endereço do servidor no campo Host name (ou IP address);
4. Agora selecione a opção SSH > Tunnels;
5. Informe 6000 no campo source port e opção "Dynamic";
6. Clique no botão add;
7. Clique no botão open;
8. Agora é só configurar o navegador conforme passos 4, 5, 6 e 7) da configuração para Linux;
9. Para quem usa o IE, selecione a opção Ferramentas > Opções de internet;
10. Na aba "Conexões", clique no botão "Definições da Lan";
11. Marque a opção: "Utilizar um servidor proxy para a rede local"
12. Clique no botão: Avançadas
13. No campo socks, informe: localhost e na porta informe 6000;
14. Clique em OK, em seguida OK, depois Aplicar e por último OK.
Pronto, agora você já pode acessar aqueles sites que vc não podia sem ninguém te importunar. Além de navegar. Tudo de forma segura.
O mecanismo funciona da seguinte maneira:
* Estabelece-se um túnel entre a sua máquina e a máquina servidora;
* Este túnel é feito utilizando algoritmos de chave pública e privada, garantindo total privacidade dos dados que trafegam por ali.
O que é necessário:
* Máquina servidora com SSH instalado e funcionando
* A máquina cliente com cliente SSH
Mãos na massa:
Vou partir do princípio que você já tenha um servidor SSH instalado e funcionando. Há vários tutoriais na net que explicam como instalar. Eu por exemplo uso o Ubuntu e instalei usando o comando:
# apt-get install ssh
Configurando o cliente no Linux
1. Abra o shell e digite o comando:
$ ssh
2. A primeira vez o Linux irá perguntar se deseja salvar o host na lista de hosts conhecidos, informe yes.
3. Informe o password e pronto, nosso túnel já está estabelecido!
4. Agora abra o seu navegador (eu uso o Firefox), vá em Editar > Preferências;
5. Na aba rede, clique no botão configurar;
6. No campo acesso a internet, selecione a opção: "Configuração manual de proxy";
7. No campo SOCKS, informe localhost e na porta, informe 6000;
8. Clique em aplicar.
Para quem está do lado negro da força, configurando no Windows:
1. Baixe o aplicativo Putty e o execute;
2. Selecione a opção "Session";
3. Informe o endereço do servidor no campo Host name (ou IP address);
4. Agora selecione a opção SSH > Tunnels;
5. Informe 6000 no campo source port e opção "Dynamic";
6. Clique no botão add;
7. Clique no botão open;
8. Agora é só configurar o navegador conforme passos 4, 5, 6 e 7) da configuração para Linux;
9. Para quem usa o IE, selecione a opção Ferramentas > Opções de internet;
10. Na aba "Conexões", clique no botão "Definições da Lan";
11. Marque a opção: "Utilizar um servidor proxy para a rede local"
12. Clique no botão: Avançadas
13. No campo socks, informe: localhost e na porta informe 6000;
14. Clique em OK, em seguida OK, depois Aplicar e por último OK.
Pronto, agora você já pode acessar aqueles sites que vc não podia sem ninguém te importunar. Além de navegar. Tudo de forma segura.
Operadores de Re-Direcionamento
Os operadores de redirecionamento são totalmente essenciais nos sistemas baseados em Unix, inclusive o Linux. Eles permitem bastantes recursos, como o redirecionamento da saída de um programa para um arquivo, enviar a saída de um programa para entrada de outro e muito mais!
Os operadores são: >, >>, <, 2> e |
Os operadores > e >> são usados para redirecionar a saída de um programa para um arquivo. A sintaxe é muito simples que dá pena:
• comando > arquivo
• comando >> arquivo
O operador > é usado para sobrescrever um arquivo com a saída do comando. Por exemplo:
$ ls > arqs
A saída não será nenhuma se tudo ocorreu bem. Agora ao dar "ls" normalmente você verá um arquivo a mais que é o 'arqs'. Tente dar um cat:
$ cat arqs
(saída do cmd 'ls')
Você pode usar o comando echo para escrever mensagens personalizadas. Veja como:
$ echo "É só um teste" > arqs
$ cat arqs
É só um teste
Algumas características:
• O arquivo será sobrescrito!
• Caso não se tenha permissão para escrever no arquivo, vai dar erro.
• Caso o arquivo não exista, ele será criado.
Seria a mesma coisa que o >, mas com uma diferença: ele não sobrescreve o arquivo. Neste caso você poderá escrever mais. Dê uma olhada:
$ rm teste
-> É bom, caso o arquivo exista poderá nos atrapalhar um pouco
$ echo "Os arquivos são:" >> teste
$ ls ~ >> teste
$ echo "Fim dos arquivos:" >> teste
$ cat teste
Os arquivos são:
(os arquivos do diretório $HOME)
Fim dos arquivos:
$ less
Vai
digitando
qualquer
coisa
aqui
^D
Então aparecerá o "less" listando o texto página a página. O ^D no final, quer dizer, "Ctrl+D", significa "Fim de arquivo".
Agora tente fazer um arquivo com o nome de "teste", digita qualquer coisa e tenta então:
$ less <>
(saída do comando less)
Seria o mesmo que você digitar tudo que tem no arquivo como entrada, mas como o pessoal do Unix tem bom senso, eles automatizaram isso. O ^D também é automatizado.
Este operador pode facilmente ser substituído pelo pipe (|), junto com o comando 'cat'.
A sintaxe:
$ comando1 | comando2
O que o pipe faz é redirecionar a saída de comando1 para entrada de comando2.
Veja um exemplo:
Imagine que o comando "xyz" mostre a frase "Teste de pipe" e o comando "separa" transforma cada espaço em um '-'.
Veja:
$ xyz Teste de pipe $ separa isto é um teste! ^D <-- Isto foi digitado pelo teclado!!!!!!!! isto-é-um-teste! $
Agora se quisermos fazer aparecer a saída de xyz ("Teste de pipe") ser separado por '-'s?
Basta:
$ xyz | separa
Teste-de-pipe
Esta é uma noção. Veja alguns comandos que trabalham muito bem com o pipe:
* echo
* cat
* less
* more
* sed
* awk
* etc
Os operadores são: >, >>, <, 2> e |
Os operadores > e >> são usados para redirecionar a saída de um programa para um arquivo. A sintaxe é muito simples que dá pena:
• comando > arquivo
• comando >> arquivo
O operador >
O operador > é usado para sobrescrever um arquivo com a saída do comando. Por exemplo:
$ ls > arqs
A saída não será nenhuma se tudo ocorreu bem. Agora ao dar "ls" normalmente você verá um arquivo a mais que é o 'arqs'. Tente dar um cat:
$ cat arqs
(saída do cmd 'ls')
Você pode usar o comando echo para escrever mensagens personalizadas. Veja como:
$ echo "É só um teste" > arqs
$ cat arqs
É só um teste
Algumas características:
• O arquivo será sobrescrito!
• Caso não se tenha permissão para escrever no arquivo, vai dar erro.
• Caso o arquivo não exista, ele será criado.
O operador >>
Seria a mesma coisa que o >, mas com uma diferença: ele não sobrescreve o arquivo. Neste caso você poderá escrever mais. Dê uma olhada:
$ rm teste
-> É bom, caso o arquivo exista poderá nos atrapalhar um pouco
$ echo "Os arquivos são:" >> teste
$ ls ~ >> teste
$ echo "Fim dos arquivos:" >> teste
$ cat teste
Os arquivos são:
(os arquivos do diretório $HOME)
Fim dos arquivos:
O operador <
A função deste operador é o contrário do >: ao invés de mandar a saída do comando para o arquivo, ele manda o arquivo como entrada do comando. Não entendeu? Dê uma olhadinha:$ less
Vai
digitando
qualquer
coisa
aqui
^D
Então aparecerá o "less" listando o texto página a página. O ^D no final, quer dizer, "Ctrl+D", significa "Fim de arquivo".
Agora tente fazer um arquivo com o nome de "teste", digita qualquer coisa e tenta então:
$ less <>
(saída do comando less)
Seria o mesmo que você digitar tudo que tem no arquivo como entrada, mas como o pessoal do Unix tem bom senso, eles automatizaram isso. O ^D também é automatizado.
Este operador pode facilmente ser substituído pelo pipe (|), junto com o comando 'cat'.
O pipe - |
Este é, com certeza, o mais importante de todos os operadores de redirecionamento. O pipe é bem complexo ao se comparar com os outros operadores, mas vale è pena conhecer.A sintaxe:
$ comando1 | comando2
O que o pipe faz é redirecionar a saída de comando1 para entrada de comando2.
Veja um exemplo:
Imagine que o comando "xyz" mostre a frase "Teste de pipe" e o comando "separa" transforma cada espaço em um '-'.
Veja:
$ xyz Teste de pipe $ separa isto é um teste! ^D <-- Isto foi digitado pelo teclado!!!!!!!! isto-é-um-teste! $
Agora se quisermos fazer aparecer a saída de xyz ("Teste de pipe") ser separado por '-'s?
Basta:
$ xyz | separa
Teste-de-pipe
Esta é uma noção. Veja alguns comandos que trabalham muito bem com o pipe:
* echo
* cat
* less
* more
* sed
* awk
* etc
O que é TELNET? E sua diferença para SSH.
Telnet é um protocolo cliente-servidor usado para permitir a comunicação entre computadores ligados numa rede (exemplos: rede local / LAN, Internet), baseado em TCP.
Telnet é um protocolo de login remoto.
Antes de existirem os chats em IRC o Telnet já permitia este gênero de funções.
O protocolo Telnet também permite obter um acesso remoto a um computador.
Este protocolo vem sendo gradualmente substituído pelo SSH, cujo conteúdo é criptografado antes de ser enviado. O uso do protocolo Telnet tem sido desaconselhado, a medida que os administradores de sistemas vão tendo maiores preocupações de segurança. Com o Telnet todas as comunicações entre o cliente e o servidor podem ser vistas, inclusive senhas, já que são somente texto plano, permitindo assim que com o uso de "port-stealing" intercepte a conexão e seus pacotes, fazendo hijacking.
- O serviço de SSH permite fazer o acesso remoto ao console de sua máquina, em outras palavras, você poderá acessar sua máquina como se estivesse conectado localmente ao seu console (substituindo o rlogin e rsh). A principal diferença com relação ao serviço telnet padrão, rlogin e rsh é que toda a comunicação entre cliente/servidor é feita de forma encriptada usando chaves públicas/privadas RSA para criptografia garantindo uma transferência segura de dados.
A velocidade do console remoto conectado via Internet é excelente (melhor que a obtida pelo telnet e serviços r*) dando a impressão de uma conexão em tempo real, a compactação dos dados também pode ser ativada para elevar ainda mais a velocidade entre cliente-servidor ssh. Além do serviço de acesso remoto, o scp possibilita a transferência/recepção segura de arquivos.
Em conexões sem criptografia (rsh, rlogin) os dados trafegam de forma desprotegida e caso exista algum sniffer instalado em sua rota com a máquina destino, todo o que fizer poderá ser capturado.
Resumindo:
SSH: permite usar um shell em uma conexão criptografada. (entre outras coisas)
Telnet, rsh e rlogin: em uma conexão não criptografada.
Telnet é um protocolo de login remoto.
Antes de existirem os chats em IRC o Telnet já permitia este gênero de funções.
O protocolo Telnet também permite obter um acesso remoto a um computador.
Este protocolo vem sendo gradualmente substituído pelo SSH, cujo conteúdo é criptografado antes de ser enviado. O uso do protocolo Telnet tem sido desaconselhado, a medida que os administradores de sistemas vão tendo maiores preocupações de segurança. Com o Telnet todas as comunicações entre o cliente e o servidor podem ser vistas, inclusive senhas, já que são somente texto plano, permitindo assim que com o uso de "port-stealing" intercepte a conexão e seus pacotes, fazendo hijacking.
- O serviço de SSH permite fazer o acesso remoto ao console de sua máquina, em outras palavras, você poderá acessar sua máquina como se estivesse conectado localmente ao seu console (substituindo o rlogin e rsh). A principal diferença com relação ao serviço telnet padrão, rlogin e rsh é que toda a comunicação entre cliente/servidor é feita de forma encriptada usando chaves públicas/privadas RSA para criptografia garantindo uma transferência segura de dados.
A velocidade do console remoto conectado via Internet é excelente (melhor que a obtida pelo telnet e serviços r*) dando a impressão de uma conexão em tempo real, a compactação dos dados também pode ser ativada para elevar ainda mais a velocidade entre cliente-servidor ssh. Além do serviço de acesso remoto, o scp possibilita a transferência/recepção segura de arquivos.
Em conexões sem criptografia (rsh, rlogin) os dados trafegam de forma desprotegida e caso exista algum sniffer instalado em sua rota com a máquina destino, todo o que fizer poderá ser capturado.
Resumindo:
SSH: permite usar um shell em uma conexão criptografada. (entre outras coisas)
Telnet, rsh e rlogin: em uma conexão não criptografada.
quinta-feira, 29 de julho de 2010
Tarefa 3 - Como !?
- Como Re-Direcionar a Saída de Erro Padrão (STDERR)
No Exemplo do qual estarei mostrando abaixo acho que dá para entender como se usa e para que serve o re-direcionamento de saída de erro padrão:
ls teste 2>> error.log
obs: Em negrito comandos do shell
Aqui no exemplo ocorre o seguinte ele pede para mostrar o arquivo teste caso a arquivo não exista dará o seguinte erro: "ls falhou" a mensagem de erro é anexada no error.log.
Obs2: Modo mais simples que achei para explicar o Re-direcionamento de saíde de erro padrão
ls teste 2>> error.log
obs: Em negrito comandos do shell
Aqui no exemplo ocorre o seguinte ele pede para mostrar o arquivo teste caso a arquivo não exista dará o seguinte erro: "ls falhou" a mensagem de erro é anexada no error.log.
Obs2: Modo mais simples que achei para explicar o Re-direcionamento de saíde de erro padrão
- Como Buscar Registros Únicos (uniq)
O comando para fazer essa função seria o uniq pois tem a função de filtrar uma sequência de linhas de modo a remover as linhas adjacentes com conteúdo repetido. Pode ler as linhas em um arquivo ou então lê-las através de uma canalização.
Em geral é utilizado juntamente com o comando sort para remover repetições de seqüências de linhas previamente ordenadas por este comando usando a saída de outros comandos.
Considerando o arquivo teste.txt abaixo:
Yo
Oi
Yo
Bye
Bye
Um exemplo de uso em conjunto de sort e uniq utilizando um pipe é:
sort teste.txt | uniq
Que produz o resultado:
Yo
Oi
Bye
Em geral é utilizado juntamente com o comando sort para remover repetições de seqüências de linhas previamente ordenadas por este comando usando a saída de outros comandos.
Considerando o arquivo teste.txt abaixo:
Yo
Oi
Yo
Bye
Bye
Um exemplo de uso em conjunto de sort e uniq utilizando um pipe é:
sort teste.txt | uniq
Que produz o resultado:
Yo
Oi
Bye
- Como Ordenar Registros (sort)
O comando para fazer essa função seria o uniq pois tem a função de ordenar tudo que esta dentro do registro em ordem afabética e numérica.Também podendo alternar essa ordem sendo de trás pra frente tambem com uma de suas funções o: -r, mais também há varias.
Exemplo básico de uso de sort:
cat teste.txt
camelo
ostra
tubarão
macaco
Agora com sort:
Exemplo básico de uso de sort:
cat teste.txt
camelo
ostra
tubarão
macaco
Agora com sort:
sort teste.txt
camelo
macaco
ostra
tubarão
E com o uso da função -r:
sort -r teste.txt
tubarão
ostra
macaco
camelo
- Como Usar o Comando find
Para procurar dentro de um diretório específico, informe o caminho ao find:
find caminho/onde/procurar
O find recebe uma série de parâmetros úteis. É bom lembrar que o diretório de procura precisa ser sempre o primeiro parâmetro. Assim, para procurar por todos os arquivos de extensão .txt no diretório atual, faça:
find -name "*.txt"
E para procurar dentro de um diretório específico, use:
find caminho/onde/procurar -name "*.txt"
O find permite a você construir uma série de expressões de procura e operação com os arquivos, algumas bastante complicadas (e poderosas). Vamos dar uma olhada em algumas bem simples. Para apagar os arquivos, use -delete. Então, para apagar todos os arquivos .txt no diretório atual e em seus subdiretórios, faça:
find -name "*.txt" -delete
Você também pode passar parâmetros numéricos, que funcionam segundo a seguinte lógica:
• Um número sozinho significa exatamente aquele número, por exemplo: 3
• Com um sinal de mais, significa maior do que aquele número: +3
• Com um sinal de menos, significa menor do que aquele número: -3
Para ver uma lista dos arquivos modificados há menos de três dias, faça:
find -mtime -3
Para ver os que foram modificados a mais de três dias, inverta o sinal:
find -mtime +3
As expressões mais comuns para uso com tempo são:
• -amin – quando o arquivo foi acessado, em minutos.
• -atime – quando o arquivo foi acessado, em dias.
• -cmin – quando o arquivo foi criado, em minutos.
• -ctime – quando o arquivo foi criado, em dias.
• -mmin – quando o arquivo foi modificado, em minutos.
• -mtime – quando o arquivo foi modificado, em dias.
Outras expressões bastante úteis são:
• -regex: funciona como -name, mas recebe uma expressão regular .
• -size: filtra pelo tamanho do arquivo. É um número seguido de uma letra. As mais comuns são: c – bytes, k – kilobytes, M – megabytes e G – gigabytes.
Por fim, você também pode mandar o find executar operações nos arquivos. Foi o que fizemos no início, quando usamos -delete para apagar arquivos. Dentre as operações, uma legal é a -exec.
Quando você coloca -exec numa linha de comando do find, tudo o que vem depois até o próximo “;” é entendido pelo find como um comando, que ele vai executar para cada um dos arquivos encontrados. É obrigatório colocar “;” para terminar o comando, se você se esquecer vai receber o seguinte erro:
$ find -exec ls
find: faltando argumento para `-exec'
Onde você quiser passar para seu comando o nome do arquivo, use {}. Por exemplo, para tirar a permissões de execução de todos os arquivos TXT na busca, você pode fazer:
find -name "*.txt" -exec chmod -x {} ";"
Isso vai executar, para cada um dos arquivos encontrados:
chmod -x ARQUIVO ;
O último truque que eu gostaria que você guardasse na manga é que você pode combinar o find com o excelente comando grep. Grep faz buscas dentro de um arquivo. Com o parâmetro -l o grep apenas lista o nome do arquivo se a expressão regular de busca for encontrada. Então, para encontrar todos os arquivos python que contém o texto “urllib” você pode fazer:
find -name *.py -exec grep -l urllib {} ";"
O find, é claro, tem muito mais recursos e opções. Se quiser mesmo se aprofundar, man find.
quarta-feira, 28 de julho de 2010
RAIDS: Seus Tipos, Vantagens e Desvantagens
Redundant Array of Independent Drives
Também denominado Redundant Array of Inexpensive Drives ou mais conhecido como simplesmente RAID ou ainda em português: Conjunto Redundante de Discos Independentes ou também Conjunto Redundante de Discos Econômicos, é um meio de se criar um sub-sistema de armazenamento composta por vários discos individuais, com a finalidade de ganhar segurança e desempenho.
Vantagens
1. Ganho de desempenho no acesso.
2. Redundância em caso de falha em um dos discos.
3. Uso múltiplo de várias unidades de discos.
4. Facilidade em recuperação de conteúdo "perdido".
Tipos
Vantagens:
- Acesso rápido as informações (até 50% mais rápido).
- Custo baixo para expansão de memória.
Desvantagens:
- Caso algum dos setores de algum dos HD’s venha a apresentar perda de informações, o mesmo arquivo que está dividido entre os mesmos setores dos demais HD’s não terão mais sentido existir, pois uma parte do arquivo foi corrompida, ou seja, caso algum disco falhe, não tem como recuperar.
- Não é usado paridade.

RAID 0 - Striping
No striping, ou distribuição, os dados são subdivididos em segmentos consecutivos (stripes, ou faixas) que são escritos seqüencialmente através de cada um dos discos de um array, ou conjunto. Cada segmento tem um tamanho definido em blocos. A distribuição, ou striping, oferece
melhor desempenho comparado a discos individuais, se o tamanho de cada segmento for ajustado de acordo com a aplicação que utilizará o conjunto, ou array.
Há problemas de confiabilidade e desempenho. RAID 0 não terá desempenho desejado com sistemas operacionais que não oferecem suporte a busca combinada de setores. Uma desvantagem desta organização é que a confiança se torna geometricamente pior. Um disco SLED com um tempo médio de vida de 20.000 horas será 4 vezes mais seguro do que 4 discos funcionando em paralelo com RAID 0 (admitindo-se que a capacidade de armazenamento somada dos quatro discos for igual ao do disco SLED). Como não existe redundância, não há confiabilidade neste tipo de organização.
melhor desempenho comparado a discos individuais, se o tamanho de cada segmento for ajustado de acordo com a aplicação que utilizará o conjunto, ou array.Há problemas de confiabilidade e desempenho. RAID 0 não terá desempenho desejado com sistemas operacionais que não oferecem suporte a busca combinada de setores. Uma desvantagem desta organização é que a confiança se torna geometricamente pior. Um disco SLED com um tempo médio de vida de 20.000 horas será 4 vezes mais seguro do que 4 discos funcionando em paralelo com RAID 0 (admitindo-se que a capacidade de armazenamento somada dos quatro discos for igual ao do disco SLED). Como não existe redundância, não há confiabilidade neste tipo de organização.
Vantagens:
- Acesso rápido as informações (até 50% mais rápido).
- Custo baixo para expansão de memória.
Desvantagens:
- Caso algum dos setores de algum dos HD’s venha a apresentar perda de informações, o mesmo arquivo que está dividido entre os mesmos setores dos demais HD’s não terão mais sentido existir, pois uma parte do arquivo foi corrompida, ou seja, caso algum disco falhe, não tem como recuperar.
- Não é usado paridade.
RAID 1 - Mirror

É o nível de RAID que implementa o espelhamento de disco, também conhecido como mirror. Para esta implementação são necessários no mínimo dois discos. O funcionamento deste nível é simples: todos os dados são gravados em dois discos diferentes; se um disco falhar ou for removido, os dados preservados no outro disco permitem a não descontinuidade da operação do sistema.
Vantagens:
- Caso algum setor de um dos discos venha a falhar, basta recuperar o setor defeituoso copiando os arquivos contidos do segundo disco.
- Segurança nos dados (com relação a possíveis defeitos que possam ocorrer no HD).
Desvantagens:
- Custo relativamente alto se comparado ao RAID 0.
- Ocorre aumento no tempo de escrita.
- Não é usado paridade.
- Caso algum setor de um dos discos venha a falhar, basta recuperar o setor defeituoso copiando os arquivos contidos do segundo disco.
- Segurança nos dados (com relação a possíveis defeitos que possam ocorrer no HD).
Desvantagens:
- Custo relativamente alto se comparado ao RAID 0.
- Ocorre aumento no tempo de escrita.
- Não é usado paridade.
RAID 2/1
RAID 2 é similar ao RAID 4, mas armazena informação ECC (Error Correcting Code), que é a informação de controle de erros, no lugar da paridade. Este fato possibilita uma pequena protecção adicional, porém o RAID 2 ficou obsoleto pelas novas tecnologias de disco já possuírem este tipo de correcção internamente. O RAID 2 origina uma maior consistência dos dados se houver queda de energia durante a escrita. Baterias de segurança e um encerramento correto podem oferecer os mesmos benefícios.
Vantagem:
- Usa ECC;
Desvantagem:
- Hoje em dia há tecnologias melhores para o mesmo fim;
RAID 3
É uma versão simplificada do RAID nível 2. Nesse arranjo, um único bit de paridade é computado para cada palavra de dados e escrito em um drive de paridade. À primeira vista, pode parecer que um único bit de paridade dá somente detecção de erro, e não correção de erro. Para o caso de erros aleatórios não detectados, essa observação é verdadeira. Todavia, para o caso de uma falha de drive, ela provê correção total de erros de um bit, uma vez que a posição do bit defeituoso é conhecida. Se um drive falhar, o controlador apenas finge que todos os seus bits são "zeros". Se uma palavra apresentar erro de paridade, o bit que vem do drive extinto deve ter
sido um "um", portanto, é corrigido.
A fim de evitar o atraso em razão da latência rotacional, o RAID 3 exige que todos os eixos das unidades de disco estejam sincronizados. A maioria das unidades de disco mais recentes não possuem a opção de sincronização do eixo, ou se são capazes disto, faltam os conectores necessários, cabos e documentação do fabricante.
sido um "um", portanto, é corrigido.A fim de evitar o atraso em razão da latência rotacional, o RAID 3 exige que todos os eixos das unidades de disco estejam sincronizados. A maioria das unidades de disco mais recentes não possuem a opção de sincronização do eixo, ou se são capazes disto, faltam os conectores necessários, cabos e documentação do fabricante.
Vantagens:
- Leitura rápida
- Escrita rápida
- Possui controle de erros
Desvantagem:
- Montagem difícil via software
RAID 4
Funciona com dois ou mais discos iguais. Um dos discos guarda a paridade (uma forma de soma de segurança) da informação contida nos discos. Se algum dos discos avariar, a paridade pode ser imediatamente utilizada para reconstituir o seu conteúdo. Os discos restantes, usados para armazenar dados, são configurados para usarem segmentos suficientemente grandes (tamanho medido em blocos) para acomodar um registro inteiro. Isto permite leituras independentes da informação armazenada, fazendo do RAID 4 um array perfeitamente ajustado para ambientes transacionais que requerem muitas leituras pequenas e simultâneas.
O RAID 4 assim como outros RAID's, cuja característica é utilizarem paridade, usam um processo de recuperação de dados mais envolvente que arrays espelhados, como RAID 1. Este nível também é útil para criar discos virtuais de grande dimensão, pois consegue somar o espaço total oferecido por todos os discos, exceto o disco de paridade. O desempenho oferecido é razoável nas operações de leitura, pois podem ser utilizados todos os discos em simultâneo.
Sempre que os dados são escritos no array, as informações são lidas do disco de paridade e um novo dado sobre paridade deve ser escrito para o respectivo disco antes da próxima requisição de escrita ser realizada. Por causa dessas duas operações de I/O, o disco de paridade é o factor limitante do desempenho total do array. Devido ao facto do disco requerer somente um disco adicional para protecção de dados, este RAID é mais acessível em termos monetários que a implementação do RAID 1.
O RAID 4 assim como outros RAID's, cuja característica é utilizarem paridade, usam um processo de recuperação de dados mais envolvente que arrays espelhados, como RAID 1. Este nível também é útil para criar discos virtuais de grande dimensão, pois consegue somar o espaço total oferecido por todos os discos, exceto o disco de paridade. O desempenho oferecido é razoável nas operações de leitura, pois podem ser utilizados todos os discos em simultâneo.
Sempre que os dados são escritos no array, as informações são lidas do disco de paridade e um novo dado sobre paridade deve ser escrito para o respectivo disco antes da próxima requisição de escrita ser realizada. Por causa dessas duas operações de I/O, o disco de paridade é o factor limitante do desempenho total do array. Devido ao facto do disco requerer somente um disco adicional para protecção de dados, este RAID é mais acessível em termos monetários que a implementação do RAID 1.
Vantagens:
- Taxa de leitura rápida;
- Possibilidade do aumento de área de discos físicos.
Desvantagens:
- Taxa de gravação lenta.
- Em comparação com o RAID 1, em caso de falha do disco, a reconstrução é difícil, pois o RAID 1 já tem o dado pronto no disco espelhado.
- Tecnologia não mais usada por haver melhores para o mesmo fim.
RAID 5 - Parity
É frequentemente usado e funciona similarmente ao RAID 4, mas supera alguns dos problemas mais comuns sofridos por esse tipo. As informações sobre paridade para os dados do array são distribuídas ao longo de todos os discos do array , ao invés de serem armazenadas num disco dedicado, oferecendo assim mais desempenho que o RAID 4, e, simultaneamente, tolerância a falhas.
Para aumentar o desempenho de leitura de um array RAID 5, o tamanho de cada segmento em que os dados são divididos pode ser optimizado para o array que estiver a ser utilizado. O desempenho geral de um array RAID 5 é equivalente ao de um RAID 4, excepto no caso de leituras sequenciais, que reduzem a eficiência dos algoritmos de leitura por causa da distribuição das informações sobre paridade. A informação sobre paridade é distribuída por todos os discos;
perdendo-se um, reduz-se a disponibilidade de ambos os dados e a paridade, até à recuperação do disco que falhou. Isto causa degradação do desempenho de leitura e de escrita.
Para aumentar o desempenho de leitura de um array RAID 5, o tamanho de cada segmento em que os dados são divididos pode ser optimizado para o array que estiver a ser utilizado. O desempenho geral de um array RAID 5 é equivalente ao de um RAID 4, excepto no caso de leituras sequenciais, que reduzem a eficiência dos algoritmos de leitura por causa da distribuição das informações sobre paridade. A informação sobre paridade é distribuída por todos os discos;
perdendo-se um, reduz-se a disponibilidade de ambos os dados e a paridade, até à recuperação do disco que falhou. Isto causa degradação do desempenho de leitura e de escrita.Vantagens:
- Maior rapidez com tratamento de ECC.
- Leitura rápida (porém escrita não tão rápida).
Desvantagem:
- Sistema complexo de controle dos HDs.
RAID 6
É um padrão relativamente novo, suportado por apenas algumas controladoras. É semelhante ao RAID 5, porém usa o dobro de bits de paridade, garantindo a integridade dos dados caso até 2 dos HDs falhem ao mesmo tempo. Ao usar 8 HDs de 20 GB cada um em RAID 6, teremos 120 GB de dados e 40 GB de paridade.
Vantagem:
- Possibilidade falhar 2 HDs ao mesmo tempo sem perdas.
Desvantagens:
- Precisa de N+2 HDs para implementar por causa dos discos de paridade.
- Escrita lenta.
- Sistema complexo de controle dos HDs.
Assinar:
Postagens (Atom)