terça-feira, 21 de fevereiro de 2017

Escrevendo scripts de backup



Colaboração: Carlos E. Morimoto



Durante a década de 70, vários utilitários foram desenvolvidos para fazer backup de arquivos armazenados em servidores Unix. Os computadores da época eram muito limitados, por isso os utilitários precisavam ser simples e eficientes, e deveriam existir meios de agendar os backups para horários de pouco uso das máquinas.

Sugiram então utilitários como o tar e o gzip e mais tarde ferramentas como o rsync. Estes utilitários eram tão eficientes que continuaram sendo usados ao longo do tempo. Por incrível que possa parecer, são usados sem grandes modificações até os dias hoje.

Naturalmente, existem muitos utilitários amigáveis de backup, como o Amanda (para servidores) e o Konserve (um utilitários mais simples, voltado para usuários domésticos). Mas, internamente, eles continuam utilizando como base o o dump, tar, gzip e outros trigenários.

Mais incrível ainda, é que estes utilitários possuem uma penetração relativamente pequena. A maior parte dos backups ainda são feitos através de scripts personalizados, escritos pelo próprio administrador. E, novamente, estes scripts utilizam o tar, gzip, rsync e outros.

É justamente sobre estes scripts personalizados que vou falar aqui. Vamos começar com alguns exemplos simples:

Para compactar o conteúdo de uma pasta, usamos o tar combinado com o gzip ou bzip2. O tar agrupa os arquivos e o gzip os compacta. Os arquivos compactados com o gzip usam por padrão a extensão "tar.gz", enquanto os compactados com o bzip2 usam a extensão "tar.bz2". O bzip2 é mais eficiente, chega a obter 10% ou mais de compressão adicional, mas em compensação é bem mais pesado: demora cerca de 3 vezes mais para compactar os mesmos arquivos. Você escolhe entre um e outro de acordo com a tarefa.

O comando para compactar uma parta é similar ao "tar -zxvf" que usamos para descompactar arquivos. Para compactar a pasta "arquivos/", criando o arquivo "arquivos.tar.gz", o comando seria:
  $ tar -zcvf arquivos.tar.gz arquivos/ 
O "c" indica que o tar deve criar um novo arquivo e o "v" faz com que exiba informações na tela enquanto trabalha. Se preferir comprimir em bz2, muda apenas a primeira letra; a invés de "z" usamos "j":
  $ tar -jcvf arquivos.tar.bz2 arquivos/ 


Estes comandos seriam ideais para fazer um backup completo, de uma ou várias pastas do sistema, gerando um arquivo compactado que poderia ser armazenado num HD externo, gravado num DVD ou mesmo transferido via rede para outro servidor.

Imagine agora um outro cenário, onde você precisa fazer backup dos arquivos de uma pasta de trabalho diariamente. Os arquivos gerados não são muito grandes e você tem muito espaço disponível, mas é necessário que os backups diários feitos em arquivos separados e sejam guardados por um certo período, de forma que seja possível recuperar um arquivo qualquer a partir da data.

Ao invés de ficar renomeando os arquivos, você poderia usar um pequeno script para que os arquivos fossem gerados já com a data e hora incluída no nome do arquivo:
  DATA=`date +%Y-%m-%d-%H.%M`
  cd /mnt/backup
  tar -zcvf trabalho-"$DATA".tar.gz /mnt/hda6/trabalho/


A primeira linha do script cria uma variável "DATA", contendo o resultado do comando " date +%Y-%m-%d-%H.%M". O comando date retorna a data e hora atual, como em "Sex Set 16 12:36:06 BRST 2005". A saída padrão dele não é muito adequada para usar em nomes de arquivos, por isso usamos as opções para alterar o formato de saída, de forma que o resultado seja "2005-09-16-12.37" (ano, mês, dia, hora, minuto, segundo). Usamos este valor no nome do arquivo com o backup, de forma que cada vez que você chame o script, seja gerado um arquivo com a data e hora em que foi gerado, sem a possibilidade de dois arquivos saírem com o mesmo nome.

O próximo passo é fazer com que este script de backup seja executado diariamente de forma automática, o que pode ser feito usando o cron.

Em primeiro lugar, salve os comandos num arquivo de texto, que vamos chamar de "backup.sh" e transforme-o num executável usando o comando "chmod +x backup.sh".

Para que ele seja executado automaticamente todos os dias, copie-o para dentro da pasta "/etc/cron.daily" e certifique-se que o serviço "cron" esteja ativo:
  # cp -a backup-sh /etc/cron.daily
  # /etc/init.d/cron start 
Se preferir que o script seja executado apenas uma vez por semana, ou mesmo uma vez por hora, use as pastas "/etc/cron.weekly" ou a "/etc/cron.hourly". Por padrão, os scripts dentro da pasta "/etc/cron.daily" são executados pouco depois das 6 da manhã (o horário exato varia de acordo com a distribuição), para alterar o horário, edite o arquivo "/etc/crontab", alterando a linha:
  25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily 


O "25 6" indica o minuto e a hora. Se quiser que o script seja executado às 11 da noite, por exemplo, mude para "00 23".

Neste exemplo usei a pasta "/mnt/backup" para salvar os arquivos. Esta pasta pode ser o ponto de montagem de um HD externo ou de um compartilhamento de rede por exemplo. O seu script pode conter os comandos necessários para montar e desmontar a pasta automaticamente.

Imagine, por exemplo, que o backup é sempre feito na primeira partição de um HD externo, ligado na porta USB, que é sempre detectada pelo sistema como "/dev/sda1". O script deve ser capaz de montar a partição, gravar o arquivo de backup e depois desmontá-la. Se por acaso o HD não estiver plugado, o script deve abortar o procedimento. Para isso precisamos verificar se o HD realmente foi montado depois de executar o comando "mount /dev/sda1 /mnt/sda1". Existem muitas formas de fazer isso, uma simples é simplesmente filtrar a saída do comando "mount" (que mostra todos os dispositivos montados) usando o grep para ver se o "/mnt/sda1" aparece na lista. Se não estiver, o script termina, caso esteja ele continua, executando os comandos de backup:
  mount /dev/sda1 /mnt/sda1
  montado=`mount | grep /mnt/sda1`
  
  if [ -z "$montado" ]; then
    exit 1
  else
    DATA=`date +%Y-%m-%d-%H.%M`
    cd /mnt/backup
    tar -zcvf trabalho-"$DATA".tar.gz /mnt/hda6/trabalho/
    umount /mnt/sda1
  fi 


A partir daí, sempre que você deixar o HD externo plugado no final do expediente, o backup é feito e estará pronto no outro dia. Se esquecer de plugar o HD num dia, o script percebe e não faz nada.

Se preferir que o script grave o backup num DVD, ao invés de simplesmente salvar numa pasta, você pode usar o "growisofs" para gravá-lo no DVD. Neste caso, vamos gerar o arquivo numa pasta temporária e deletá-lo depois da gravação:
  DATA=`date +%Y-%m-%d-%H.%M`
  rm -rf /tmp/backup; mkdir /tmp/backup; cd /tmp/backup
  tar -zcvf trabalho-"$DATA".tar.gz /mnt/hda6/trabalho/
  growisofs -speed=2 -Z /dev/dvd -R -J /tmp/backup/trabalho-"$DATA".tar.gz
  rm -rf /tmp/backup 


O "-speed=2" permite que você especifique a velocidade de gravação do DVD, o "-Z" cria uma nova seção no DVD, é possível usar o mesmo disco para gravar vários backups (se o espaço permitir) usando a opção "-M" a partir da segunda gravação, que adiciona novas seções no DVD, até que o espaço se acabe.

O "/dev/dvd" indica o dispositivo do drive de DVD. A maioria das distribuições cria o link /dev/dvd apontando para o dispositivo correto, mas, em caso de problemas, você pode indicar diretamente o dispositivo correto, como, por exemplo, "/dev/hdc". As opções "-R -J" adicionam suporte às extensões RockRidge e Joilet.

Se o cron for configurado para executar o script todos os dias, você só precisará se preocupar em deixar o DVD no drive antes de sair.

Outro grande aliado na hora de programar backups é o rsync. Ele permite sincronizar o conteúdo de duas pastas, transferindo apenas as modificações. Ele não trabalha apenas comparando arquivo por arquivo, mas também comparando o conteúdo de cada um. Se apenas uma pequena parte do arquivo foi alterada, o rsync transferirá apenas ela, sem copiar novamente todo o arquivo.

Ele é uma forma simples de fazer backups incrementais, de grandes quantidades de arquivos, ou mesmo partições inteiras, mantendo uma única cópia atualizada de tudo num HD externo ou num servidor remoto. Este backup incremental pode ser atualizado todo dia e complementado por um backup completo (para o caso de um desastre acontecer), feito uma vez por semana ou uma vez por mês.

Para instalar o rsync, procure pelo pacote "rsync" no gerenciador de pacotes. No Debian instale com um "apt-get install rsync" e no Mandriva com um "urpmi rsync".

Para fazer um backup local, basta informar a pasta de origem e a pasta de destino, para onde os arquivos serão copiados:
  $ rsync -av /mnt/hda6/trabalho /mnt/backup/ 


A opção "-a" (archive) faz com que todas as permissões e atributos dos arquivos sejam mantidos, da mesma forma que ao criar os arquivos com o tar e o "v" (verbose) mostra o progresso na tela.

A cópia inicial vai demorar um pouco, mais do que demoraria uma cópia simples dos arquivos. Mas, a partir da segunda vez a operação será muito mais rápida.

Note que neste comando estamos copiando a pasta "trabalho" recursivamente para dentro da "/mnt/backup", de forma que seja criada a pasta "/mnt/backup/trabalho". Adicionando uma barra, como em "/mnt/hda6/trabalho/", o rsync copiaria o conteúdo interno da pasta diretamente para dentro da "/mnt/backup".

Se algum desastre acontecer e você precisar recuperar os dados, basta inverter a ordem das pastas no comando, como em:
  $ rsync -av /mnt/backup/trabalho /mnt/hda6/trabalho/ 


O rsync pode ser também usado remotamente. Originalmente ele não utiliza nenhum tipo de criptografia, o que faz com que ele não seja muito adequado para backups via Internet. Mas, este problema pode ser resolvido com a ajuda do SSH, que pode ser utilizado como meio de transporte. Não é a toa que o SSH é chamado de canivete suíço, ele realmente faz de tudo.

Neste caso o comando ficaria um pouco mais complexo:
  $ rsync -av --rsh="ssh -C -l tux" /mnt/hda6/trabalho \
  tux@192.168.0.1:/mnt/backup/ 


Veja que foi adicionado um parâmetro adicional, o --rsh="ssh -C -l tux", que orienta o rsync a utilizar o SSH como meio de transporte. O "-C" orienta o SSH a comprimir todos os dados (economizando banda da rede) e a se conectar ao servidor remoto usando o login tux (-l tux). Naturalmente, para que o comando funcione é preciso que o servidor esteja com o SSH habilitado, e você tenha um login de acesso.

Em seguida vem a pasta local com os arquivos, o endereço IP (ou domínio) do servidor e a pasta (do servidor) para onde vão os arquivos.

Para recuperar o backup, basta novamente inverter a ordem do comando, como em:
  $ rsync -av --rsh="ssh -C -l tux" tux@192.168.0.1:/mnt/backup/ \
  mnt/hda6/trabalho 


Originalmente, você vai precisar fornecer a senha de acesso ao servidor cada vez que executar o comando. Ao usar o comando dentro do script de backup, você pode gerar uma chave de autenticação, tornando o login automático. Esta opção é menos segura, pois caso alguém consiga copiar a chave (o arquivo .ssh/id_rsa dentro no home do usuário), poderá ganhar acesso ao servidor.

De qualquer forma, para usar este recurso, rode o comando "ssh-keygen -t rsa" (que gera a chave de autenticação) usando o login do usuário que executará o script de backup, deixando a passprase em branco. Em seguida, copie-o para o servidor, usando o comando:
  $ ssh-copy-id -i ~/.ssh/id_rsa.pub tux@192.168.0.1 
A partir daí, o script de backup pode ser executado diretamente, através do cron, pois não será mais solicitada a senha.

sábado, 18 de fevereiro de 2017

MaruOS: O fim da era PC


O sistema operacional convergente tornou-se realidade com excelente desempenho em celulares Android. O projeto MaruOS promete o que muitos não conseguiram concluir até agora, tornar um celular




A era dos PCs está chegando ao fim


Ricardo Longo
July 14, 2015

http://www.onoffre.com

As consultorias Gartner e IDC mostraram no começo dessa semana números alarmantes para a indústria de computadores do mundo todo. Segundo os relatórios, a venda de computadores e notebooks caiu entre 9.5% a 11.8%. A única empresa a demonstrar crescimento anual foi a Apple, com aumento de 16,1%. Mas dentro dos Estados Unidos, o principal mercado consumidor de tecnologia do mundo, até mesmo a empresa de Cupertino está enfrentando um declínio de 2.5%. Os indicativos parecem confirmar que o reinado dos computadores de mesa está chegando ao fim. Segundo a Gartner, o declínio aconteceu pela valorização do Dólar fora dos Estados Unidos e pela falta de um lançamento para estimular a troca. Além disso, os lojistas estão esperando pelo lançamento do próximo sistema operacional da Microsoft, o Windows 10, para comprarem novos estoques.

Mas ainda que esses motivos expliquem o declínio no último ano, a indústria de computadores está passando por um decaimento geral, em um movimento é conhecido como “A Era Pós-PC”. O termo ganhou força após a entrevista de Steve Jobs na conferência D8, em 2010, na qual o então CEO da Apple estimou que existiria um device que substituiria o PC no futuro e que este último seria um produto de nicho, usado somente por algumas pessoas, como caminhões. Desde então, tem se especulado muito sobre qual seria a tecnologia que iria encerrar o domínio dos computadores de uma vez por todas.

Por algum tempo, pensara-se que essa tecnologia seria a dos tablets. Capitaneados pelo iPad, os tablets tiveram um crescimento explosivo por permitirem uma mobilidade inédita em um aparelho com recursos e possibilidades mais avançadas do que um Smartphone. Mas até mesmo a venda dos tablets está em declínio.

A Onoffre acredita que não basta uma tecnologia para explicar a queda da participação dos computadores na vida das pessoas, mas sim uma conjuntura de fatores. Estamos presenciando uma mudança profunda no relacionamento com a tecnologia. O advento e a normalização do mobile, a expansão do acesso a internet e uma série de novas tecnologias, tais como Realidade Virtual, Big Data e Inteligência Artificial estão tornando a tecnologia mais ubíqua em nossa rotina. Não enxergamos mais a separação entre os mundos online & offline. O computador de mesa, nesse sentido, é um dos grandes marcos dessa separação. Para usá-lo, é necessário estar sentado, parado, com uma conexão fixa à internet. Tanto que antigamente costumávamos dizer “vou entrar na internet” como um sinônimo de uso do computador.

O futuro está se desenhando com tecnologias baseadas na nuvem e aplicações que são ativadas via internet, reduzindo ainda mais o espaço que hoje é ocupado por sistemas de armazenamento locais, como HDs. O crescimento exponencial da Internet das Coisas é mais um indicativo de um futuro em que tudo estará conectado e conversando entre si.

Toda essa mudança será mais suave para os usuários comuns, que irão se adaptar às novas tecnologias gradualmente e com mais naturalidade. Para os negócios, contudo, a extinção dos computadores e a retração de toda uma indústria irá obrigar a revisão de modelos de negócios, produtos e serviços. E, como tudo no mundo da tecnologia, as mudanças serão cada vez mais rápidas e drásticas a medida em que o tempo passa. Empresas que não estão se preparando para essa nova fase correrão o sério risco de serem extintas, enquanto outras poderão ter sérios lucros aproveitando as novas oportunidades que virão. Um bom exemplo é a Intel, que viu seus lucros diminuírem em mais de um bilhão de dólares em apenas alguns meses, e o Google, que hoje gasta mais do que a Intel em infra-estrutura de rede e serviços e tem o dobro do valor de mercado.

Você e sua empresa já sabem como criar estratégias para se adequar a era Pós-PC? A Onoffre pode ajudar. Entre em contato conosco e venha tomar um café!

quarta-feira, 15 de fevereiro de 2017

Sobre o fim do GdH: que Deus guie bem teu caminho, Morimoto-sensei!

Postado Por Emanuel Laguna em 02 03 2014 em Android e Linux, Artigo, Blog, Destaques, Hardware, Mercado, Open-Source, Opinião, Web 2.0




Há um ano e três meses, morria o FórumPCs: ele foi o primeiro sítio eletrônico focado em tecnologia que o tio Laguna acompanhou, foi lá que conheci o Digital Drops e, por causa deste, o MeioBit. Foi no FórumPCs que conheci os textos de muita gente interessante como o meu conterrâneo Luis Sucupira, o mestre Benito Piropo, o Alexandre Ziebert, a Elis Monteiro, o Flávio Xandó, o Julio Preuss, entre outras pessoas que escreviam (enormes!) textos excelentes sobre hardware de computadores e outros assuntos relacionados que interessavam muito a nós, uma espécie em extinção: o micreiro.

Dez ou mais anos atrás, nós entusiastas de hardware fazíamos questão de montar nossos próprios computadores pessoais desktop e, para isso, era mais interessante que necessário termos noções de eletrônica embora a tecnologia já fosse integrada o bastante para que, em qualquer problema que surgisse, fosse considerada apenas a troca da peça defeituosa, como uma placa-mãe, por exemplo. Portais como o FórumPCs nos mantinham a par do que havia de mais moderno nesse nicho. Um nicho que contava com boa concorrência. Um desses concorrentes teve anteontem o mesmo fim do FórumPCs. Estou a falar do Guia do Hardware, fundado pelo Carlos Eduardo Morimoto.

Houve uma época em que o tio Laguna era bastante curioso sobre o mundo GNU/Linux, uma época em que eu admirava aqueles que eram capazes de “compilarem seus próprios sistemas do zero”. Morimoto-sensei era um desses desbravadores. Com a ajuda de colaboradores bem competentes, Morimoto desenvolveu a mais famosa e, talvez, a melhor distribuição Linux brasileira, o Kurumin. Numa época em que eu tinha BASTANTE tempo livre, investi meu tempo e paciência para tentar me livrar das “garras mercenárias da Microsoft” e o Kurumin foi minha porta de entrada para aquele mundo livre e cheio de unicórnios do Debian, onde eu pagaria um preço justo pelo software. Se fosse de graça, melhor ainda, mas paguei pelos CDs do Kurumin à época.

Enfim, Carlos E. Morimoto não se limitou ao Kurumin e o próprio nome do mais conhecido sítio eletrônico dele já denunciava: o Guia do Hardware era uma plataforma de venda para os excelentes livros técnicos de informática que ele escrevia. Inclusive dois desses livros foram resenhados pelo nosso amigo Marcellus Pereira aqui no MeioBit: “Hardware – Guia Definitivo” e “Redes – Guia Prático”. Veja abaixo uma rara entrevista com o Morimoto-sensei:





Segundo o próprio Carlos Morimoto, os grandes culpados pelo fim do Guia do Hardware foram os computadores portáteis, como smartphones e tablets. Gostaria de citar um belo trecho do texto de despedida:


Os PCs se tornaram muito mais acessíveis e lentamente começaram a perder espaço para os notebooks, e em seguida para os smartphones e tablets. A computação se tornou acessível às massas e os eletrônicos passaram a ser algo consumível. [que o digam certos fotógrafos]
·
Cada vez menos usuários montam seus próprios PCs (muitos nem sequer ainda usam um PC!) e existe cada vez menos espaço para técnicos dedicados a configurar ou consertar coisas, já que sistemas como o Android, Ubuntu e o Windows 8 são muito simples de usar e manter e o dono tem cada vez menos acesso as entranhas do sistema, passando o foco a ser os aplicativos e não mais as configurações e manutenção. O foco geral da computação foi transferido para o mercado de consumo, com produtos cada vez mais descartáveis e cada vez menos espaço para os escovadores de bits.
·
Como consequência, a grande maioria dos sites técnicos passaram a dar mais enfoque para noticias, testes e coberturas de lançamentos, e menos enfoque aos aspectos técnicos, visando atender a demanda do publico. Proporcionalmente, cada vez menos estão interessados em explicações técnicas. Em um sentido isso é bom, pois mais pessoas passaram a ter acesso à computação, mas por outro lado esses novos tempos são um pouco frustrantes para quem é das antigas.
·
Essas mudanças de rumo tornaram nosso trabalho no GDH de certa forma obsoleto. De um certo tempo pra cá o ritmo de atualizações no site veio caindo, como deve ter notado, e eventualmente chegamos a conclusão que o melhor seria partir para outros projetos.” — Carlos Eduardo Morimoto, Guia do Hardware.



O Guia do Hardware durou 15 belos anos mas o tio Laguna crê que ele deve ter sido mais uma vítima de algo análogo à prostituição do mercado brasileiro de informática, onde qualquer curioso acha que é jornalista de tecnologia e sai fazendo blogs que apenas traduzem mal e porcamente os textos estrangeiros. É complicado competir com esse tipo de coisa. O MeioBit completa 10 anos seguindo firme e forte graças ao conteúdo diferenciado e à vocês, fiéis leitores.

Espero que o pessoal do FórumPCs e GdH não me levem a mal, mas um “defeito” que o tio Laguna sempre viu neles foi que os assuntos abordados, além de serem de nicho BEM específico, meio que não permitiam a participação dos leitores: você tinha ali muito bom conhecimento técnico sendo apresentado, mas pouco espaço para debate.

A grande tendência que a internet trouxe aos formadores de opinião foi a possibilidade de interação com os leitores e estes poderem gerar seu próprio conteúdo relacionado, seja na forma dos memes de Facebook, seja nos tweets que viralizaram no Twitter.

As estrelas do MeioBit sempre foram os comentários inteligentes dos leitores e que, por várias vezes, complementavam lindamente os textos que nós autores temos o prazer de escrever por aqui. Até para aumentarmos a interação com vocês leitores, nós iniciamos um série de hangouts com a equipe MeioBit, o Sala da Justiça do MeioBit, cuja oitava edição será exibida e gravada ao vivo no YouTube depois de amanhã, em plena terça-feira de Carnaval, às 21 h.

Enfim, as equipes do FórumPCs e GdH foram com o tempo absorvidas por outros portais e torço para que tais profissionais estejam fazendo sucesso onde quer que estejam. Nossos colegas do concorrente Tecnoblog inclusive comentaram sobre o caminho das pedras que é sobreviver e talvez lucrar com blogs sobre tecnologia, vale dar uma conferida.

Para concluir com o assunto principal do presente texto, correm rumores de que outro bom motivo para o fim do GdH seria que Carlos Morimoto resolveu abandonar totalmente a área de tecnologia e dedicar-se à religião dele (Hare Krishna). Um dos colaboradores comentou o seguinte:


“Morimoto foi, aos poucos, abandonando o mundo da informática – deixou de lado primeiro o Kurumin, depois o fórum, os livros, e finalmente parou de escrever para o GdH.
·
Hare Krishna como sempre foi, Morimoto foi se “desgostando” cada vez mais da informática, como ele mesmo me dizia, e há algum tempo decidiu “mergulhar de vez” no universo de sua religião: com seu nome Hare Krishna “Caitanya Chandra Dasa”, agora Morimoto se dedica à escrever sobre o assunto, e a inclusive distribuir (e escrever, talvez?) livros sobre o tema na região de Porto Alegre, onde mora.” — Julio César Bessa Monqueiro, Guia do Hardware.

É uma escolha pessoal dele que devemos respeitar, mas é triste não podermos mais contar com novos livros de informática escritos pelo Morimoto. Deixará muitas saudades.





















Snoop Chapado - KKKKKKKKKKKK O MELHOR VIDEO DE 2017!!


Linux X Windows

Essas patifarias em fóruns de informatica de Linux X Windows é chato pra caralho. Hoje tem arrombado de 10 anos que nem sabe ligar um pc e mete pau sem conhecer ! Ae otário, os dois sistemas operacionais estão ai para serem usado, ambos tem seus benefícios e malefícios,parem com esse negócio chato pra caralho!
Fui comentar uma dúvida  linux em um  grupo ai  e um bando de arrombado PNC  metendo o pau em linux, outros no windows. Hoje eu to vendo que essa nova safra ai de T.I  está regredindo  TNC!!!! Ao invés da galera se unir e trocar conhecimento !


segunda-feira, 13 de fevereiro de 2017

Como instalar Microsoft SQL Server no OpenSUSE LinuX



Colaboração: Alessandro de Oliveira Faria

Data de Publicação: 08 de fevereiro de 2017

fonte www.dicas-l.com.br

Veremos neste documento como executar um servidor Microsoft SQL Server na plataforma Linux. Acredito ser uma oportunidade para a comunidade GNU/Linux prover serviços de migração em servidores (local ou em Azure), como também uma ocasião favorável, pois em momentos de crise, podemos remover muitos servidores Windows Server da ilegalidade. Agradecimentos em especial para Paula Bellizia e Adriano Bottas da Microsoft pelo apoio no trabalho de interoperabilidade.

MS SQL Server voltando as origens (*NIX), pois foi criado em parceria com SYBASE. Até a versão 4.X (se não me engano), os dois bancos de dados eram praticamente idênticos. Utilizei muito o SYBASE no Conectiva Linux em 1998.

Agora o MS SQL está voltando ao ambiente Linux, baseado no SQL Server 2016, o pacote SQL Server for Linux proporciona todos os recursos para criar e desenvolver em uma única plataforma Linux produtos de acesso em banco de dados, além do gerenciamento de dados e análise de negócios.

Satya Nadella, o CEO da Microsoft assumiu prover uma maior abertura ao GNU/Linux, e assim está acontecendo. Pois o produto SQL Server, uma das peças mais populares de software na estante Microsoft, foi disponibilizado para Linux, e veremos neste artigo como utilizá-lo.

Paula Bellizia e Alessandro Faria (Cabelo)


O SQL Server for Linux apresenta todas as principais características que os usuários esperam deste produto. Depois de tornar open source o framework .NET para levá-lo ao Linux e OS X, além de ter criado uma fundação para promover software de código aberto, acredito que a decisão de disponibilizar este banco de dados no ambiente GNU/Linux é um marco. Muitas máquinas poderão sair da ilegalidade com o Windows Server e utilizar a plataforma Linux junto ao servidor MSSQL.

MÃO NA MASSA
O ambiente utilizado neste documento foi o openSUSE Leap 42.2 64 bits, estou elaborando uma imagem Linux openSUSE (CLARO) para facilitar a vida de pessoas que não estão acostumadas com as plataformas *NIX e derivados.

Para iniciar, adicione o repositório MS SQL Server conforme os comandos no exemplo a abaixo:
   su # zypper ar https://packages.microsoft.com/config/sles/12/mssql-server.repo
  Adicionando o repositório 'packages-microsoft-com-mssql-server' ..............[concluído]
  Repositório 'packages-microsoft-com-mssql-server' adicionado com sucesso
  Habilitado             : Sim                                               
  Atualização automática : Não                                               
  Verificação GPG        : Sim                                               
  Prioridade             : 99                                                
  URI                    : https://packages.microsoft.com/sles/12/mssql-server
   su
  # zypper ar https://packages.microsoft.com/config/sles/12/mssql-server.repo
  Adicionando o repositório 'packages-microsoft-com-mssql-server' ..............[concluído]
  Repositório 'packages-microsoft-com-mssql-server' adicionado com sucesso
  Habilitado             : Sim                                               
  Atualização automática : Não                                               
  Verificação GPG        : Sim                                               
  Prioridade             : 99                                                
  URI                    : https://packages.microsoft.com/sles/12/mssql-server
Após adicionar o repositório, utilize o comando refresh para atualizá-lo:
  # zypper ref
  Baixando os metadados do repositório 'packages-microsoft-com-mssql-server' -----------[|]
  Chave de assinatura de novo repositório ou pacote recebida:
    Repositório:                 packages-microsoft-com-mssql-server                   
    Nome da chave:               Microsoft (Release signing) <gpgsecurity@microsoft.com>
    Impressão digital da chave:  BC528686 B50D79E3 39D3721C EB3E94AD BE1229CF          
    Chave criada em:             Qua 28 Out 2015 21:21:48 BRST                         
    Chave expira em:             (não expira)                                          
    Nome do RPM:                 gpg-pubkey-be1229cf-5631588c
  
  Você quer rejeitar a chave, confiar temporariamente ou confiar sempre? [r/t/s/? exibe todas as opções] (r): s
  Baixando os metadados do repositório 'packages-microsoft-com-mssql-server' ...[concluído]
  Construindo o cache do repositório 'packages-microsoft-com-mssql-server' .....[concluído]
  Todos os repositórios foram atualizados.
Com o repositório atualizado, instale o pacote MS SQL SERVER conforme o comando abaixo:
  # zypper install mssql-server
  Carregando dados do repositório...
  Lendo os pacotes instalados...
  Resolvendo dependências de pacote...
O seguinte pacote NOVO será instalado:
  mssql-server
  
  1 novo pacote a ser instalado.
  Tamanho total do download: 141,4 MiB. Já em cache: 0 B. Após a operação, 669,3 MiB adicionais serão utilizados.
  Continuar? [s/n/? exibe todas as opções] (s):
  Baixando pacote mssql-server-14.0.200.24-2.x86_64                                                                                                  (1/1), 141,4 MiB (669,3 MiB descompactado)
  Baixando: mssql-server-14.0.200.24-2.x86_64.rpm .................[concluído (44,4 KiB/s)]
  Verificando por conflito de arquivos: ........................................[concluído]
  (1/1) Instalando: mssql-server-14.0.200.24-2.x86_64 ..........................[concluído] 
Ao término do download e instalação, execute o comando sqlservr-setup, LEIA e se estiver de acordo, aceite o termo de licenciamento digitando "YES" precedido da tecla ENTER. Para terminar defina a senha do administrador do Banco de Dados e confirme a criação dos link simbólicos para o init.d.
  # /opt/mssql/bin/sqlservr-setup
  Microsoft(R) SQL Server(R) Setup
  
  You can abort setup at anytime by pressing Ctrl-C. Start this program
  with the --help option for information about running it in unattended
  mode.
  
  The license terms for this product can be downloaded from
  http://go.microsoft.com/fwlink/?LinkId=746388 and found
  in /usr/share/doc/mssql-server/LICENSE.TXT.
  
  Do you accept the license terms? If so, please type "YES": YES
  Please enter a password for the system administrator (SA) account:
  The specified password does not meet SQL Server password policy requirements
  because it is not complex enough. The password must be at least 8 characters
  long and contain characters from three of the following five sets: uppercase
  letters, lowercase letters, numbers, non-alphanumeric characters, or unicode
  characters that are categorized as alphabetic characters, but are not
  uppercase or lowercase.
  
  Please enter a password for the system administrator (SA) account:
  Please confirm the password for the system administrator (SA) account:
  
  Setting system administrator (SA) account password...
  
  Do you wish to start the SQL Server service now? [y/n]: y
  Do you wish to enable SQL Server to start on boot? [y/n]: y
  Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /usr/lib/systemd/system/mssql-server.service.
  
  Setup completed successfully.
Para verificar que o servidor MS SQL está funcionando corretamente, utilize o comando systemctl conforme o exemplo:
  # systemctl status mssql-server
  ? mssql-server.service - Microsoft(R) SQL Server(R) Database Engine
     Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
     Active: active (running) since Seg 2017-01-23 17:51:28 BRST; 53s ago
  Main PID: 3239 (sqlservr)
     CGroup: /system.slice/mssql-server.service
             ??3239 /opt/mssql/bin/sqlservr
             ??3244 /opt/mssql/bin/sqlservr
  
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.21 spid17s     A self-generated certificate was successfully loaded for encryption.
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.22 spid17s     Server is listening on [ 0.0.0.0 <ipv4> 1433].
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.22 Server      Server is listening on [ 127.0.0.1 <ipv4> 1434].
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.22 Server      Dedicated admin connection support was established for listening locally on port 1434.
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.22 spid17s     SQL Server is now ready for client connections. This is an informational message; no user ac...is required.
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.35 spid7s      The tempdb database has 1 data file(s).
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.35 spid20s     The Service Broker endpoint is in disabled or stopped state.
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.35 spid20s     The Database Mirroring endpoint is in disabled or stopped state.
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.36 spid20s     Service Broker manager has started.
  Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.43 spid5s      Recovery is complete. This is an informational message only. No user action is required.
  Hint: Some lines were ellipsized, use -l to show in full.

INSTALANDO AS FERRAMENTAS CLIENTES E UTILITÁRIOS

Para instalar as ferramentas clientes, devemos adicionar o repositório da Microsoft conforme o exemplo abaixo. Não esqueça de utilizar o comando zypper ref para atualizar o repositório recém adicionado.
  # zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
  Adicionando o repositório 'packages-microsoft-com-prod' ......................[concluído]
  Repositório 'packages-microsoft-com-prod' adicionado com sucesso
  Habilitado             : Sim
  Atualização automática : Não
  Verificação GPG        : Sim
  Prioridade             : 99
  URI                    : https://packages.microsoft.com/sles/12/prod
Utilize o comando zypper com os respectivos nomes dos pacotes MSSQL-TOOLS e unixODBC-devel para instalar os pacotes clientes e utilitários. Lembre-se de ler, e somente se estiver de acordo,aceite os termos de Licenciamento.
  # zypper install mssql-tools unixODBC-devel
  Carregando dados do repositório...
  Lendo os pacotes instalados...
  Resolvendo dependências de pacote...
  
  Os seguintes 3 pacotes NOVOS serão instalados:
    msodbcsql mssql-tools unixODBC-devel
  
  3 novos pacotes a serem instalados.
  Tamanho total do download: 4,8 MiB. Já em cache: 0 B. Após a operação, 17,2 MiB adicionais serão utilizados.
  Continuar? [s/n/? exibe todas as opções] (s):
  Baixando pacote msodbcsql-13.1.3.0-1.x86_64                                                                                                        (1/3),   3,5 MiB ( 15,8 MiB descompactado)
  Baixando: msodbcsql-13.1.3.0-1.x86_64.rpm .......................[concluído (52,8 KiB/s)]
  Baixando pacote mssql-tools-14.0.2.0-1.x86_64                                                                                                      (2/3),   1,2 MiB (  1,2 MiB descompactado)
  Baixando: mssql-tools-14.0.2.0-1.x86_64.rpm .....................[concluído (47,2 KiB/s)]
  Baixando pacote unixODBC-devel-2.3.4-1.5.x86_64                                                                                                    (3/3),  40,5 KiB (192,1 KiB descompactado)
  Baixando: unixODBC-devel-2.3.4-1.5.x86_64.rpm ................................[concluído]
  Verificando por conflito de arquivos: ........................................[concluído]
  (1/3) Instalando: msodbcsql-13.1.3.0-1.x86_64 ----------------------------------------[|]The license terms for this product can be downloaded from
  http://go.microsoft.com/fwlink/?LinkId=746838 and found in
  /usr/share/doc/msodbcsql/LICENSE.TXT . By entering 'YES',
  you indicate that you accept the license terms.
  
  Do you accept the license terms? (Enter YES or NO)
  YES
  (1/3) Instalando: msodbcsql-13.1.3.0-1.x86_64 ................................[concluído]
  (2/3) Instalando: mssql-tools-14.0.2.0-1.x86_64 --------------------------------------[-]The license terms for this product can be downloaded from
  http://go.microsoft.com/fwlink/?LinkId=746949 and found in
  /usr/share/doc/mssql-tools/LICENSE.txt . By entering 'YES',
  you indicate that you accept the license terms.
  
  Do you accept the license terms? (Enter YES or NO)
  YES
  (2/3) Instalando: mssql-tools-14.0.2.0-1.x86_64 ..............................[concluído]
  (3/3) Instalando: unixODBC-devel-2.3.4-1.5.x86_64 ............................[concluído]
Crie os links simbólicos na pasta /usr/bin como super-usuário:
  # ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd
  # ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp
Para acessar o servidor utilizando o comando SQLCMD, deixo alguns exemplos de manipulação e uso desta serviço/ferramenta.
   sqlcmd -S [IP-SERVIDOR] -U SA -P [SENHA DO ADMINISTRATIVA]
  1>
  
  Testando consultas SQL no console:
  
  1> SELECT Name from sys.Databases;
  2> GO
  Name
  ----------------------------
  master
  tempdb
  model
  msdb
  (4 rows affected)
Criando banco de dados:
  1> CREATE DATABASE testdb;
  2> GO
  1>
Utilizando/abrindo o banco de dados desejado:
  1> USE testdb;
  2> GO
  Changed database context to 'testdb'.
Criando tabelas:
  1> CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);
  2> GO
  1>
  (1 rows affected)
Inserindo dados na tabela:
  1> INSERT INTO inventory VALUES (1, 'banana', 150);
  2> INSERT INTO inventory VALUES (2, 'orange', 154);
  3> GO (1 rows affected)
Consultando dados:
  1> SELECT * FROM inventory WHERE quantity > 152;
  2> GO
  id          name                                               quantity  
  ----------- -------------------------------------------------- -----------
            2 orange                                                     154
  (1 rows affected)
  1>
  1> QUIT
Para remover o serviço, use o comando zypper com o parâmetro rm e exclusão da pasta /var/opt/mssql/:
  # zypper remove mssql-server
  Carregando dados do repositório...
  Lendo os pacotes instalados...
  Resolvendo dependências de pacote...
  
  O seguinte pacote será REMOVIDO:
  mssql-server
  
  1 pacote para remover.
  Após a operação, 669,3 MiB será liberado.
  Continuar? [s/n/? exibe todas as opções] (s):
  (1/1) Removendo mssql-server-14.0.200.24-2.x86_64 ............................[concluído]
  
  # rm -rf /var/opt/mssql/
Mais informações envie email para <cabelo (a) opensuse org>, e lembre-se, colaborar atrai amigos, competir atrai inimigos.
Alessandro de Oliveira Faria é Sócio-fundador da empresa OITI TECNOLOGIA fundada em Junho de 1996, empresa especializada em desenvolvimento de soluções com a tecnologia de Reconhecimento Facial, Consultor Biométrico, Experiência em Realidade Aumentada, Visão Computacional (opencv), Neuro-tecnologia, Redes Neurais e Programação multi-nuclear com CPU e GPU, atua na área de tecnologia desde 1986, leva o Linux a sério desde 1998, membro da comunidade Viva O Linux com mais de 50 palestras e 100 artigos publicados, mantenedor da biblioteca open-source de vídeo captura, Embaixador e openSUSE Member.