Backup Linux

Considero essa forma a mais eficiente e elegante de se fazer um backup. Pois é um backup automático incremental com controle de versão e gera logs para controle/monitoramento.

Utilizo para isso os softwares LIVRES: SSH, CRON, RSYNC. A ideia é ter dois servidores o de produção e o de backup, o servidor de backup deve fazer semanalmente uma copia de varias pastas do servidor da produção. Cada copia deve ser datada e ter um arquivo do log da copia também datado. Essas copias são na verdade copias com hardlink do Linux a ideia é copiar o conteúdo do ultimo backup para um nova pasta com “cp -l ” e depois atualizar ela com o servidor usando o rsync, assim teremos um backup incremental e versionado por data! Sem falar que economizamos muito espaço em disco, banda de rede e tempo de backup com esse procedimento.

ver : http://www.vivaolinux.com.br/artigo/Backups-remotos-com-rSync-e-chaves-SSH

Por partes:

1 – SSH com autenticação via chaves publica/privada:

http://ramonrdm.wordpress.com/2011/08/16/autenticacao-com-chaves-publicaprivada-no-ssh/

2 – Instalação do Rsync:

4 – Criação do script de backup

bkp incremental hardlinks:

#!/usr/bin/env bash
#
# Faz backups incrementais de diretorios em um servidor remoto utilizando rsync e
# hardlinks para economia de banda e espaço em disco.
#
# Por Vinicius Figueiredo <viniciusfs [arroba] gmail.com>
# Dominio Publico
#

SERVER="servidor.com.br"
DIRS_TO_COPY="/var/www /etc"
BACKUP_DIR="/backup"
RETENTION=15

DATE=`date +%Y%m%d`
LOG="${0}_${DATE}.log"

CURRENT_BACKUP="${BACKUP_DIR}/${DATE}"

echo "Iniciando script em `date`" > ${LOG}

if [ -e ${BACKUP_DIR}/last ]; then
    LAST_BACKUP=`cat ${BACKUP_DIR}/last`

    if [ -d ${LAST_BACKUP} ]; then
        echo "Ultimo backup encontrando, linkando arquivos..." >> ${LOG}
        cp -la ${LAST_BACKUP} ${CURRENT_BACKUP} >> ${LOG} 2>&1
    fi
else
    echo "Nenhum backup anterior encontrado, criando diretorio para backup atual..." >> ${LOG}
    mkdir ${CURRENT_BACKUP} >> ${LOG} 2>&1
fi

for dir in ${DIRS_TO_COPY}; do
    echo "Iniciando backup de ${SERVER}:${dir}" >> ${LOG}
    rsync -av --delete ${SERVER}:${dir} ${CURRENT_BACKUP} >> ${LOG} 2>&1
done

echo ${CURRENT_BACKUP} > ${BACKUP_DIR}/last

for dir in `find ${BACKUP_DIR} -maxdepth 1 -type d -mtime +${RETENTION}`; do
    echo "Removendo backup ${dir}" >> ${LOG}
    rm -rf ${dir} >> ${LOG} >> ${LOG} 2>&1
done

5 – Automatizando o backup com o Cron

http://ramonrdm.wordpress.com/2011/09/06/cron-agendando-tarefas/

Usando rsync:

http://servidorlinux.wordpress.com/2008/02/02/backup-com-rsync-sem-senha/

http://www.dicas-l.com.br/arquivo/como_programar_backup_com_rsync_e_cron_de_maneira_rapida_e_simples.php

http://www.vivaolinux.com.br/artigo/Backup-com-Rsync

http://www.vivaolinux.com.br/artigo/Sistema-de-backup-com-rsyncd

Incremental:

http://www.ultrav.com.br/2008/11/11/backup-incremental-com-rsync-e-hardlinks/

http://blog.liquuid.net/2008/05/11/time-machine-no-linux-com-rsync/

outra opcao:

http://www.dicas-l.com.br/arquivo/script_shell_de_backup_incremental.php

http://www.dicas-l.com.br/cantinhodoshell/cantinhodoshell_20070130.php

http://www.vivaolinux.com.br/script/Backup-Remoto-com-rsync-automatico-para-varias-maquinas-sem-senha./

http://www.jveweb.net/en/archives/2011/02/using-rsync-and-cron-to-automate-incremental-backups.html

Criando um HD inicializavel a partir de uma ISO

descobri a pouco tempo um comando bom pra criar um disco de inicialização pra instalar o linux via um hd ou pendrive.
Os programas só servem pra instalar em pendrive mas eu tava com problema pra botar o ISO num hd pra instalação.

Comando:

$ sudo dd if=/home/usuario/Downloads/linuxmint-17-cinnamon-64bit-v2.iso of=/dev/sdc oflag=direct bs=1048576

o sdc era o meu hd externo, só que ele apaga tudo que ta dentro dele

 

Fonte:

Anselmo Junior

$grep -n 'texto' arquivo -r

grep é um aplicativo para linha de comando de sistemas Unix/Linux que faz buscas no conteúdo dos arquivos

-Wikipedia

Exemplos

Busca simples:

$ grep ‘joao’ arquivo.txt

Recursiva

$ grep ‘texto’ /etc/* -r

Mostrando as linhas:

$ grep -n ‘joao’ arquivo.txt

fontes:

http://www.vivaolinux.com.br/artigo/Usando-grep-e-egrep?pagina=2

http://ndvo.blog.br/pt-br/gnulinux/como-procurar-por-uma-string-em-v%C3%A1rios-arquivos/

iptables

Uma configuração de iptables

Você pode aprender tudo sobre Iptables aqui: http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html

Compartilha a rede externa com a interna e liberar as principais portas do servidor:

#!/bin/bash
#################### Inicio Firewall #################################

modprobe ip_nat
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe iptable_mangle
modprobe ipt_state
modprobe ipt_limit
modprobe ipt_multiport
modprobe ipt_mac
modprobe ipt_string
## Limpando as Regras existentes #######
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -F
iptables -X
iptables -Z

## Definindo politica padrão (Nega entrada e permite saida)
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

## Estabelece relação de confiança entre maquinas da rede local eth0(rede local)
iptables -A INPUT -i eth1 -s 10.1.0.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -i eth1 -m state –state NEW -j ACCEPT
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

############################ Compartilhamento Internet #########################
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

### SSH
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
### HTTP
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
### HTTPS
iptables -A INPUT -p tcp –dport 443 -j ACCEPT
### SMPT
iptables -A INPUT -p tcp –dport 25 -j ACCEPT
### IMAP
iptables -A INPUT -p tcp –dport 143 -j ACCEPT
### IMAPS
iptables -A INPUT -p tcp –dport 993 -j ACCEPT
### POP
iptables -A INPUT -p tcp –dport 110 -j ACCEPT
### POPS
iptables -A INPUT -p tcp –dport 465 -j ACCEPT
### ???
iptables -A INPUT -p tcp –dport 587 -j ACCEPT
### POPS
iptables -A INPUT -p tcp –dport 995 -j ACCEPT
### ICMP e ping
iptables -A INPUT -p icmp  -j ACCEPT

######################################## Fim ###################################

 

Fontes:

http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html

http://deangerber.com/blog/2011/09/10/basic-iptables-firewall-configuration/

http://www.rackspace.com/knowledge_center/article/mail-server-opening-ports-in-the-linux-firewall

Recuperação de dados

Vou apresentar algumas ferramentas do mundo GNU que permitem recuperar dados, partições e arquivos de extensão especifica. Eles podem ser decisivos na hora que tudo deu errado.

Primeiro o magnifico TestDisk, com ele você pode recuperar partições inteiras!

Uso: http://www.hardware.com.br/livros/ferramentas-linux/usando-testdisk.html

Agora se você precisa recuperar aquivos deletados você pode usar o PhotoRec que foi criado inicialmente para recuperar fotos de cartões digitais, mas pode ser usado para recuperar em mídia agora. Ele recuperar até o que você não quer… tome cuidado.

Uso: http://www.hardware.com.br/livros/hardware/usando-photorec.html

e : http://www.vivaolinux.com.br/artigo/Recuperacao-de-Dados-com-o-PhotoRec

Temos também o dd_rescue que recupera os arquivos mesmo que eles estejam em setores defeituosos, em casos de arquivos ou imagens pode ser muito útil, pois mesmo copiando com dados imprecisos você consegue recuperar a parte boa do arquivo.

Uso: http://www.hardware.com.br/livros/ferramentas-linux/copiando-dados-hds-cds-defeituosos.html

Recomendo a leitura de :

http://www.hardware.com.br/livros/hardware/capitulo-sistemas-arquivos-recuperacao-dados.html

http://www.vivaolinux.com.br/artigo/Recuperando-discos-danificados-com-o-myrescue/?pagina=1

Criando partição maior que 2 TB no Linux

Descobri somente na pratica que o MBR está limitado para partições de até 2 TB, mas para maiores temos uma solução o GPT!

Para mais informações olhe as fontes!

Aqui vai como fazer:

Vendo dados do Disco

# fdisk -l /dev/sdb

Saida:

Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table

Criar um partição de 3 TB

# parted /dev/sdb

Saída:

GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

Criando um novo rotulo do tipo GPT:

(parted) mklabel gpt

saída:

Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted)

Setar para TB a unidade de medida:

(parted) unit TB

Criando a partição com 3TB:

(parted) mkpart primary 0.00TB 3.00TB

Imprimindo o resultado:

(parted) print

Sample outputs:

Model: ATA ST33000651AS (scsi)
Disk /dev/sdb: 3.00TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name     Flags
 1      0.00TB  3.00TB  3.00TB  ext4         primary

Saindo e salvando as mudanças:

(parted) quit

Agora utilize o mkfs.ext4 para formatar a partição criada!

# mkfs.ext4 /dev/sdb1

 

Pronto! Linux é foda né?

Fontes:

http://www.ibm.com/developerworks/br/linux/library/l-gpt/

http://www.cyberciti.biz/tips/fdisk-unable-to-create-partition-greater-2tb.html

http://www.vivaolinux.com.br/artigo/Exemplos-praticos-de-comandos-com-Parted?pagina=1

Criando senha aleatórias e seguras no linux

A utilização de senhas seguras é uma obrigação a todo profissional de TI. Suas senhas devem ter um bom comprimento e alternar entre letras, números e caracteres especiais, diminuindo drasticamente a possibilidade de descoberta das senhas por outras pessoas ou mecanismos automáticos. Para facilitar a nossa vida existem dois utilitários no linux que geram senhas aleatórias sem que precisemos queimar neurônios para criá-las sozinhos: mkpasswd e makepasswd

O comando mkpasswd já vem no linux e utiliza a função crypt para gerar senhas. Já o makepasswd é mais completo: utiliza o /dev/random para gerar as senhas, pode gerar várias senhas de uma só vez e criptografá-las com o algoritmo md5.

Gerando senhas com o mkpasswd:

Apenas digite no terminal o comando:

Código:
$ mkpasswd


saída:

Código:
senha: digite-a-senha-aqui
/o76/Dpgmv/5rX2

 

Instalando o makepasswd(eu recomendo esse)

Em distribuições Debian-like, digite o seguinte comando no terminal:

Código:
$ sudo apt-get install makepasswd

 

Gerando senhas com o makepasswd:

Digite no terminal:

Código:
$ makepasswd


Saída:

Código:
1mnU8L1LVF


Para alterar o comprimento da senha gerada, utilize a opção –char

Código:
$ makepasswd –char 12


saída:

Código:
9HaifQW4q923


para gerar várias senhas de uma só vez utilize –count

Código:
$ makepasswd –count 5


Saída:

Código:
LzSoH0
K2QXW5L
AisGn0vn
ETVj0W74
NpBp1TeA


Para gerar uma senha criptografada, utilize –crypt-md5 (Ele exibirá a senha em texto plano e criptografada)

Código:
$ makepasswd –crypt-md5


Saída:

Código:
YM2WYIry  $1$mn8MFbyM$Suk986UgD/kOuNBJsBzoD/


Um pequeno script para alterar senhas de usuários com o makepasswd:

Código:
#!/bin/bash
#changepass
#Script para alterar a senha de um usuario
#escrito por Luiz Guanabara www.guanabara.eti.br
#if [ $UID != 0 ]
then
echo -e “ntVoce precisa ser root para executar este script!n”
exit
fi

echo “Informe o nome do usuario”
read name
echo “Informe o comprimento da senha”
read lenght

pass=$(makepasswd –char $lenght)

echo “$name:$pass” | chpasswd

echo “A senha do usuario $name foi alterada para $pass ”

 

———————

Pwgen: utilitário para criar senhas seguras no Linux

por Helbert Rocha no dia 13/ago/2010 em Aplicativos

Pwgen é um gerador de senhas projetado de modo que as senhas sejam facilmente memorizadas pelas pessoas. As senhas que podem ser lembradas pelas pessoas nunca foram tão seguras quanto aquelas geradas aleatoriamente. Em particular, as senhas geradas por este aplicativo sem a opção “-s” não devem ser usadas onde elas podem ser atacadas pela força bruta.

Instalação

Ubuntu

No Ubuntu, para instalar o Pwgen, basta executar o comando abaixo no terminal.

$ sudo apt-get install pwgen

Fedora

No Fedora, para instalar o Pwgen, basta executar o comando abaixo no terminal.

$ su -c 'yum install pwgen'

Uso

Para utilizar o Pwgen, temos algumas opções. Vide abaixo quais são elas.

  • -0, para não incluir números nas senhas geradas.
  • -A, para não incluir letras maiúsculas.
  • -B, para excluir caracteres que possam causar confusões, como 1 e l, por exemplo.
  • -y, para inserir ao menos um caractere especial (*$=!?% …).
  • -n, para inserir ao menos um número na senha gerada.
  • -s, para gerar uma senha aleatória e difícil de ser memorizada.

Exemplo

$ pwgen -0AByns 5 3
OYQS9 5z4O1 gRjR9

Portanto, vemos que foram geradas 3 senhas de 5 caracteres de acordo com as opções pedidas. Para mais informações sobre o Pwgen, clique aqui.

Fontes:

http://networkteam.forumbrasil.net/t30-linux-gerando-senhas-seguras-e-aleatorias

http://meupinguim.com/pwgen-utilitario-criar-senhas-seguras-linux/

Comando scp, copiando arquivos – recursivo

Secure Copy ou SCP é um meio seguro para transferir arquivos entre um host local e um remoto ou entre dois hosts remotos, usando o protocolo SSH.

Ex.:
scp /home/usuario/teste.txt usuario@host_destino:/home/usuario/teste.txt

Para transferir diretórios e subpastas, basta colocar a opção scp -r.

scp -r /home/usuario/pasta usuario@host_destino:/home/usuario

Para transferir arquivos preservando as permissões e datas dos mesmos, basta colocar a opção scp -p.

scp -p /home/usuario/pasta usuario@host_destino:/home/usuario/pasta

e ainda juntar os dois:

scp -rp /home/usuario/pasta usuario@host_destino:/home/usuario/pasta

Fontes:

http://amath.colorado.edu/computing/software/man/scp.html

http://fabriciojca.blogspot.com/2009/07/scp-recursivo.html

Visualizando partições

Trabalhando ou apenas visualizaro espaço livre da partição:

particionadores:

fdisk, cfdisk, sfdisk

Para ver lista de particoes:

# fdisk -l

Para ver o espaço livre das particoes montadas:

# df -h

Para ver o tamanho de uma pasta:

# du -sh /pasta

 

 

Se quiser formatar um disco:

Partindo do principio que o disco esta montado e energizado ele deve aparecer como /dev/sda, /dev/sdb ….

Então faça:

cfdisk /dev/sda

apague toda e qualquer particao que apareca e CRIE (new) uma nova, tipo 83 (linux).

gravar – (shift W, ou seja, W maiusculo)

mkfs.ext3 /dev/sda1

Pronto agora é só montar ela ou então incluir no fstab para montar toda vez que bootar