Administrador Linux - Backup e recuperação
Antes de explorar os métodos específicos do CentOS para implantar um plano de backup padrão, vamos primeiro discutir as considerações típicas para uma política de backup de nível padrão. A primeira coisa a que queremos nos acostumar é a3-2-1 backup rule.
3-2-1 Estratégia de backup
Em todo o setor, você frequentemente ouvirá o termo modelo de backup 3-2-1. Esta é uma abordagem muito boa para se viver ao implementar um plano de backup. 3-2-1 é definido como segue:3cópias de dados; por exemplo, podemos ter a cópia de trabalho; uma cópia colocada no servidor CentOS projetada para redundância usando rsync; e backups USB externos rotativos são feitos de dados no servidor de backup.2diferentes mídias de backup. Na verdade, teríamos três mídias de backup diferentes neste caso: a cópia de trabalho em um SSD de um laptop ou estação de trabalho, os dados do servidor CentOS em uma matriz RADI6 e os backups externos colocados em drives USB.1cópia de dados fora do local; estamos girando as unidades USB externamente todas as noites. Outra abordagem moderna pode ser um provedor de backup em nuvem.
Recuperação do sistema
Um plano de restauração bare metal é simplesmente um plano estabelecido por um administrador CentOS para colocar sistemas vitais online com todos os dados intactos. Presumindo 100% de falha do sistema e perda de todo o hardware do sistema anterior, um administrador deve ter um plano para atingir o tempo de atividade com dados do usuário intactos, custando tempo de inatividade mínimo. O kernel monolítico usado no Linux realmente torna as restaurações bare metal usando imagens do sistema muito mais fáceis do que no Windows. Onde o Windows usa uma arquitetura de micro-kernel.
Uma restauração completa de dados e recuperação bare metal são geralmente realizadas por meio de uma combinação de métodos, incluindo trabalho, imagens de disco de produção configuradas dos principais servidores operacionais, backups redundantes de dados do usuário obedecendo à regra 3-2-1. Mesmo alguns arquivos confidenciais que podem ser armazenados em um cofre à prova de fogo com acesso limitado ao pessoal confiável da empresa.
Uma restauração bare metal multifásica e plano de recuperação de dados usando ferramentas CentOS nativas pode consistir em:
dd para fazer e restaurar imagens de disco de produção de servidores configurados
rsync para fazer backups incrementais de todos os dados do usuário
tar & gzip para armazenar backups criptografados de arquivos com senhas e notas de administradores. Normalmente, ele pode ser colocado em uma unidade USB, criptografado e bloqueado em um cofre que um gerente sênior pode acessar. Além disso, isso garante que outra pessoa saberá as credenciais de segurança vitais se o administrador atual ganhar na loteria e desaparecer em uma ilha ensolarada em algum lugar.
Se um sistema travar devido a uma falha de hardware ou desastre, a seguir serão apresentadas as diferentes fases das operações de restauração -
Construir um servidor funcional com uma imagem bare metal configurada
Restaurar dados para o servidor de trabalho a partir de backups
Ter acesso físico às credenciais necessárias para realizar as duas primeiras operações
Use rsync para backups em nível de arquivo
rsync é um ótimo utilitário para sincronizar diretórios de arquivos localmente ou para outro servidor. O rsync é usado há anos pelos Administradores de sistema, portanto, é muito refinado para o propósito de fazer backup de dados. Na opinião do autor, um dos melhores recursos de sincronização é a capacidade de ser programado a partir da linha de comando.
Neste tutorial, discutiremos o rsync de várias maneiras -
- Explore e fale sobre algumas opções comuns
- Crie backups locais
- Crie backups remotos por SSH
- Restaurar backups locais
rsynctem o nome por sua finalidade: Sincronização remota e é poderoso e flexível em uso.
A seguir está um backup remoto rsync básico sobre ssh -
MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/
[email protected]:home/rdc/ Documents/RemoteStuff/
[email protected]'s password:
sending incremental file list
6,148 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
33,144 100% 31.61MB/s 0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
892,406 100% 25.03MB/s 0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
77 100% 2.21kB/s 0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
43,188,224 1% 4.26MB/s 0:08:29
sent 2,318,683,608 bytes received 446 bytes 7,302,941.90 bytes/sec
total size is 2,327,091,863 speedup is 1.00
MiNi:~ rdc$
A sincronização a seguir enviou quase 2,3 GB de dados pela nossa LAN. A beleza do rsync é que ele funciona de forma incremental no nível do bloco, arquivo por arquivo. Isso significa que, se alterarmos apenas dois caracteres em um arquivo de texto de 1 MB, apenas um ou dois blocos serão transferidos pela LAN na próxima sincronização!
Além disso, a função incremental pode ser desabilitada em favor de mais largura de banda da rede usada para menos utilização da CPU. Isso pode ser aconselhável ao copiar constantemente vários arquivos de banco de dados de 10 MB a cada 10 minutos em uma LAN de backup dedicada de 1 Gb. O raciocínio é: estes estarão sempre mudando e transmitindo incrementalmente a cada 10 minutos e podem sobrecarregar a CPU remota. Visto que a carga total de transferência não excederá 5 minutos, podemos apenas desejar sincronizar os arquivos do banco de dados por completo.
A seguir estão as opções mais comuns com rsync -
rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path
Interruptor | Açao |
---|---|
-uma | Modo de arquivo e assume -r, -p, -t, -g, -l |
-d | Sincronizar apenas árvore de diretório, sem arquivos |
-r | Recursivo no diretório |
-eu | Copiar links simbólicos como links simbólicos |
-p | Preservar permissões |
-g | Preservar grupo |
-v | Saída detalhada |
-z | Comprimir no link de rede |
-X | Preservar atributos estendidos |
-UMA | Preservar ACLs |
-t | Preservar carimbos de data / hora |
-W | Transferir o arquivo inteiro, não blocos incrementais |
-você | Não sobrescrever arquivos no destino |
--progresso | Mostrar o progresso da transferência |
--excluir | Exclua arquivos mais antigos no destino |
--max-size = XXX | Tamanho máximo do arquivo para sincronizar |
Quando usar rsync
Minha preferência pessoal para rsync é ao fazer backup de arquivos de um host de origem para um host de destino. Por exemplo, todos os diretórios pessoais para recuperação de dados ou mesmo fora do local e na nuvem para recuperação de desastres.
Backup local com rsync
Já vimos como transferir arquivos de um host para outro. O mesmo método pode ser usado para sincronizar diretórios e arquivos localmente.
Vamos fazer um backup incremental manual de / etc / no diretório do usuário raiz.
Primeiro, precisamos criar um diretório off ~ / root para o backup sincronizado -
[root@localhost rdc]# mkdir /root/etc_baks
Em seguida, certifique-se de que haja espaço livre em disco suficiente.
[root@localhost rdc]# du -h --summarize /etc/
49M /etc/
[root@localhost rdc]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 43G 15G 28G 35% /
Somos bons para sincronizar todo o nosso diretório / etc / -
rsync -aAvr /etc/ /root/etc_baks/
Nosso diretório / etc / sincronizado -
[root@localhost etc_baks]# ls -l ./
total 1436
drwxr-xr-x. 3 root root 101 Feb 1 19:40 abrt
-rw-r--r--. 1 root root 16 Feb 1 19:51 adjtime
-rw-r--r--. 1 root root 1518 Jun 7 2013 aliases
-rw-r--r--. 1 root root 12288 Feb 27 19:06 aliases.db
drwxr-xr-x. 2 root root 51 Feb 1 19:41 alsa
drwxr-xr-x. 2 root root 4096 Feb 27 17:11 alternatives
-rw-------. 1 root root 541 Mar 31 2016 anacrontab
-rw-r--r--. 1 root root 55 Nov 4 12:29 asound.conf
-rw-r--r--. 1 root root 1 Nov 5 14:16 at.deny
drwxr-xr-x. 2 root root 32 Feb 1 19:40 at-spi2
--{ condensed output }--
Agora vamos fazer um rsync incremental -
[root@localhost etc_baks]# rsync -aAvr --progress /etc/ /root/etc_baks/
sending incremental file list
test_incremental.txt
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1145/1282)
sent 204620 bytes received 2321 bytes 413882.00 bytes/sec
total size is 80245040 speedup is 387.77
[root@localhost etc_baks]#
Apenas nosso arquivo test_incremental.txt foi copiado.
Backups diferenciais remotos com rsync
Vamos fazer nosso backup completo inicial de rsync em um servidor com um plano de backup implantado. Na verdade, este exemplo está fazendo backup de uma pasta em uma estação de trabalho Mac OS X para um servidor CentOS. Outro grande aspecto do rsync é que ele pode ser usado em qualquer plataforma para a qual o rsync foi transferido.
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes received 336 bytes 9,720,257.27 bytes/sec
total size is 2,326,636,892 speedup is 1.00
MiNi:~ rdc$
Agora, fizemos o backup de uma pasta de uma estação de trabalho em um servidor que executa um volume RAID6 com mídia de recuperação de desastres girada armazenada externamente. Usar o rsync nos deu backup 3-2-1 padrão com apenas um servidor tendo uma dispendiosa matriz de disco redundante e backups diferenciais rotacionados.
Agora vamos fazer outro backup da mesma pasta usando rsync após adicionar um único arquivo novo chamado test_file.txt .
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
test_file.txt
sent 814 bytes received 61 bytes 134.62 bytes/sec
total size is 2,326,636,910 speedup is 2,659,013.61
MiNi:~ rdc$
Como você pode ver, apenas o novo arquivo foi entregue ao servidor via rsync . A comparação diferencial foi feita arquivo por arquivo.
Algumas coisas a serem observadas são: Isso apenas copia o novo arquivo: test_file.txt, pois é o único arquivo com alterações. rsync usa ssh. Nunca precisamos usar nossa conta root em nenhuma das máquinas.
Simples, poderoso e eficaz, o rsync é ótimo para fazer backup de pastas inteiras e estruturas de diretório. No entanto, o rsync por si só não automatiza o processo. É aqui que precisamos aprofundar nossa caixa de ferramentas e encontrar a melhor, pequena e simples ferramenta para o trabalho.
Para automatizar backups rsync com cronjobs , é essencial que os usuários SSH sejam configurados usando chaves SSH para autenticação. Isso combinado com cronjobs permite que o rsync seja feito automaticamente em intervalos de tempo.
Use DD para imagens de recuperação bare metal bloco a bloco
DD é um utilitário do Linux que existe desde o surgimento do kernel do Linux, encontrando os utilitários GNU.
dd em termos mais simples copia uma imagem de uma área de disco selecionada. Em seguida, oferece a capacidade de copiar blocos selecionados de um disco físico. Portanto, a menos que você tenha backups, uma vez que o dd grava em um disco, todos os blocos são substituídos. A perda de dados anteriores excede os recursos de recuperação, mesmo para recuperação de dados de nível profissional com preços elevados.
Todo o processo para fazer uma imagem de sistema inicializável com dd é o seguinte -
- Inicialize a partir do servidor CentOS com uma distribuição Linux inicializável
- Encontre a designação do disco inicializável a ser criado
- Decida o local onde a imagem de recuperação será armazenada
- Encontre o tamanho do bloco usado no seu disco
- Inicie a operação da imagem dd
Neste tutorial, por questão de tempo e simplicidade, criaremos uma imagem ISO do registro mestre de inicialização de uma máquina virtual CentOS. Em seguida, armazenaremos essa imagem fora do local. Caso nosso MBR seja corrompido e precise ser restaurado, o mesmo processo pode ser aplicado a um disco ou partição inicializável inteiro. No entanto, o tempo e o espaço em disco necessários realmente vão um pouco além para este tutorial.
Recomenda-se que os administradores do CentOS se tornem proficientes na restauração de um disco / partição totalmente inicializável em um ambiente de teste e execute uma restauração bare metal. Isso tirará muita pressão quando, eventualmente, for necessário concluir a prática em uma situação da vida real com gerentes e algumas dezenas de usuários finais contando o tempo de inatividade. Nesse caso, 10 minutos tentando descobrir as coisas pode parecer uma eternidade e fazer alguém suar.
Note- Ao usar o dd, certifique-se de NÃO confundir os volumes de origem e destino. Você pode destruir dados e servidores inicializáveis copiando o local do backup para uma unidade de inicialização. Ou, possivelmente, pior, destruir os dados para sempre copiando os dados em um nível muito baixo com DD.
A seguir estão as opções e parâmetros de linha de comando comuns para dd -
Interruptor | Açao |
---|---|
if = | No arquivo ou fonte a ser copiado |
de = | Arquivo de saída ou cópia do arquivo |
bs | Defina o tamanho do bloco de entrada e saída |
obs | Definir tamanho do bloco do arquivo de saída |
SII | Definir tamanho do bloco de arquivo de entrada |
contagem | Defina o número de blocos para copiar |
conv | Opções extras para adicionar para imagens |
Noerror | Não pare de processar um erro |
sincronizar | Blocos de entrada de blocos não ajustados em caso de erro ou desalinhamento |
Note on block size- O tamanho do bloco padrão para dd é 512 bytes. Esse era o tamanho de bloco padrão das unidades de disco rígido de densidade mais baixa. Os HDDs de alta densidade atuais aumentaram para tamanhos de bloco de 4.096 bytes (4kB) para permitir discos de 1 TB e maiores. Portanto, queremos verificar o tamanho do bloco de disco antes de usar o dd com discos rígidos mais novos e de maior capacidade.
Para este tutorial, em vez de trabalhar em um servidor de produção com dd , estaremos usando uma instalação CentOS rodando em VMWare. Também configuraremos o VMWare para inicializar uma imagem ISO do Linux inicializável em vez de trabalhar com um stick USB inicializável.
Primeiro, precisaremos baixar a imagem CentOS intitulada: CentOS Gnome ISO . Isso tem quase 3 GB e é aconselhável sempre manter uma cópia para criar pen drives USB inicializáveis e inicializar em instalações de servidor virtual para resolução de problemas e imagens bare metal.
Outras distros Linux inicializáveis funcionarão tão bem. O Linux Mint pode ser usado para ISOs inicializáveis, pois tem excelente suporte de hardware e ferramentas de disco de GUI polidas para manutenção.
A imagem inicializável do CentOS GNOME Live pode ser baixada de: http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso
Vamos configurar a instalação do VMWare Workstation para inicializar a partir de nossa imagem inicializável do Linux. As etapas são para VMWare no OS X. No entanto, são semelhantes no VMWare Workstation no Linux, Windows e até na Caixa Virtual.
Note- Usar uma solução de desktop virtual como Virtual Box ou VMWare Workstation é uma ótima maneira de configurar cenários de laboratório para aprender as tarefas de administração do CentOS. Ele oferece a capacidade de instalar várias instalações CentOS, praticamente sem configuração de hardware, permitindo que a pessoa se concentre na administração e até mesmo salve o estado do servidor antes de fazer alterações.
Primeiro, vamos configurar um cd-rom virtual e anexar nossa imagem ISO para inicializar em vez da instalação do servidor virtual CentOS -
Agora, defina o disco de inicialização -
Agora, quando inicializada, nossa máquina virtual inicializará a partir da imagem ISO inicializável do CentOS e permitirá o acesso aos arquivos no servidor CentOS Virtual que foi configurado anteriormente.
Vamos verificar nossos discos para ver de onde queremos copiar o MBR (a saída condensada é a seguinte).
MiNt ~ # fdisk -l
Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Localizamos nossos discos físicos: sda e sdb . Cada um tem um tamanho de bloco de 512 bytes. Portanto, agora executaremos o comando dd para copiar os primeiros 512 bytes para nosso MBR no SDA1.
A melhor maneira de fazer isso é -
[root@mint rdc]# dd if=/dev/sda bs=512 count=1 | gzip -c >
/mnt/sdb/images/mbr.iso.gz
1+0 records in
1+0 records out
512 bytes copied, 0.000171388 s, 3.0 MB/s
[root@mint rdc]# ls /mnt/sdb/
mbr-iso.gz
[root@mint rdc]#
Assim, temos a imagem completa do nosso registro mestre de inicialização. Se tivermos espaço suficiente para criar a imagem da unidade de inicialização, poderíamos facilmente fazer uma imagem de inicialização completa do sistema -
dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz
O conv = sync é usado quando os bytes devem ser alinhados para um meio físico. Neste caso, o dd pode obter um erro se os alinhamentos exatos de 4 K não forem lidos (digamos ... um arquivo que tem apenas 3 K, mas precisa ter no mínimo um único bloco de 4 K no disco. Ou simplesmente há um erro de leitura e o arquivo não pode ser lido por dd.). Assim, dd com conv = sync, noerror preencherá o 3K com dados triviais, mas úteis para o meio físico em alinhamentos de bloco de 4K. Apesar de não apresentar um erro que pode encerrar uma grande operação.
Ao trabalhar com dados de discos, sempre queremos incluir: conv = sync, parâmetro noerror .
Isso ocorre simplesmente porque os discos não são fluxos como os dados TCP. Eles são formados por blocos alinhados a um determinado tamanho. Por exemplo, se temos blocos de 512 bytes, um arquivo de apenas 300 bytes ainda precisa de 512 bytes completos de espaço em disco (possivelmente 2 blocos para informações de inode, como permissões e outras informações do sistema de arquivos).
Use gzip e tar para armazenamento seguro
gzip e tar são dois utilitários que um administrador CentOS deve se acostumar a usar. Eles são usados para muito mais do que simplesmente descompactar arquivos.
Usando Gnu Tar no CentOS Linux
Tar é um utilitário de arquivamento semelhante ao winrar no Windows. Seu nome Tape Archive abreviado como tar resume muito bem o utilitário. O tar pegará os arquivos e os colocará em um arquivo para conveniência lógica. Portanto, em vez das dezenas de arquivos armazenados em / etc. poderíamos apenas "compactá-los" em um arquivo para conveniência de backup e armazenamento.
tar tem sido o padrão para armazenar arquivos arquivados no Unix e Linux por muitos anos. Portanto, usar tar junto com gzip ou bzip é considerado a melhor prática para arquivos em cada sistema.
A seguir está uma lista de chaves de linha de comando comuns e opções usadas com tar -
Interruptor | Açao |
---|---|
-c | Cria um novo arquivo .tar |
-C | Extrai para um diretório diferente |
-j | Usa compressão bzip2 |
-z | Usa compressão gzip |
-v | Progresso detalhado do arquivamento do show |
-t | Lista o conteúdo do arquivo |
-f | Nome do arquivo do arquivo |
-x | Extrai arquivo tar |
A seguir está a sintaxe básica para criar um arquivo tar .
tar -cvf [tar archive name]
Note on Compression mechanisms with tar- É aconselhável seguir um dos dois esquemas de compactação comuns ao usar o tar: gzip e bzip2. Os arquivos gzip consomem menos recursos da CPU, mas geralmente são maiores. Embora o bzip2 demore mais para compactar, ele utiliza mais recursos da CPU; mas resultará em um tamanho de arquivo final menor.
Ao usar a compactação de arquivo, sempre queremos usar extensões de arquivo padrão, permitindo que todos, inclusive nós mesmos, saibam (em vez de adivinhar por tentativa e erro) qual esquema de compactação é necessário para extrair os arquivos.
bzip2 | .tbz |
bzip2 | .tar.tbz |
bzip2 | .tb2 |
gzip | .tar.gz |
gzip | .tgz |
Quando for necessário extrair arquivos em uma caixa do Windows ou para usar no Windows, é aconselhável usar .tar.tbz ou .tar.gz, pois a maioria das extensões de três caracteres simples irá confundir Windows e apenas administradores do Windows (no entanto, isto é às vezes o resultado desejado)
Vamos criar um arquivo tar compactado a partir de nossos backups remotos copiados da estação de trabalho Mac -
[rdc@mint Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[rdc@mint Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz
Note- Em vez de adicionar todos os arquivos diretamente ao arquivo, arquivamos toda a pasta RemoteStuff . Este é o método mais fácil. Simplesmente porque, quando extraído, todo o diretório RemoteStuff é extraído com todos os arquivos dentro do diretório de trabalho atual como ./currentWorkingDirectory/RemoteStuff/
Agora vamos extrair o arquivo dentro do diretório / root / home.
[root@centos ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[root@mint ~]# ping www.google.com
Como visto acima, todos os arquivos foram simplesmente extraídos para o diretório contido em nosso diretório de trabalho atual.
[root@centos ~]# ls -l
total 2262872
-rw-------. 1 root root 1752 Feb 1 19:52 anaconda-ks.cfg
drwxr-xr-x. 137 root root 8192 Mar 9 04:42 etc_baks
-rw-r--r--. 1 root root 1800 Feb 2 03:14 initial-setup-ks.cfg
drwxr-xr-x. 6 rdc rdc 4096 Mar 10 22:20 RemoteStuff
-rw-r--r--. 1 root root 2317140451 Mar 12 07:12 RemoteStuff.tgz
-rw-r--r--. 1 root root 9446 Feb 25 05:09 ssl.conf [root@centos ~]#
Use gzip para compactar backups de arquivos
Conforme observado anteriormente, podemos usar bzip2 ou gzip do tar com o -j ou -zopções de linha de comando. Também podemos usar o gzip para compactar arquivos individuais. No entanto, o uso de bzip ou gzip sozinho não oferece tantos recursos quanto quando combinado com tar .
Ao usar o gzip , a ação padrão é remover os arquivos originais, substituindo cada um por uma versão compactada adicionando a extensão .gz.
Algumas opções de linha de comando comuns para gzip são -
Interruptor | Açao |
---|---|
-c | Mantém os arquivos após colocá-los no arquivo |
-eu | Obtenha estatísticas para o arquivo compactado |
-r | Compacta recursivamente os arquivos nos diretórios |
-1 a 9 | Especifica o nível de compressão em uma escala de 1 a 9 |
O gzip funciona mais ou menos em uma base arquivo por arquivo e não em um arquivo como alguns utilitários Windows O / S zip. A principal razão para isso é que o tar já fornece recursos avançados de arquivamento. O gzip é projetado para fornecer apenas um mecanismo de compactação.
Portanto, ao pensar em gzip , pense em um único arquivo. Ao pensar em vários arquivos, pense em arquivos tar . Vamos agora explorar isso com nosso arquivo tar anterior .
Note - Profissionais experientes em Linux freqüentemente se referem a um arquivo tarado como um tarball.
Vamos fazer outro arquivo tar com nosso backup rsync .
[root@centos Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[root@centos Documents]# ls
RemoteStuff.tar RemoteStuff/
Para fins de demonstração, vamos usar o gzip no tarball recém-criado e dizer ao gzip para manter o arquivo antigo. Por padrão, sem a opção -c , gzip substituirá todo o arquivo tar por um arquivo .gz .
[root@centos Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[root@centos Documents]# ls
RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.
Vamos tentar testar a opção -l com gzip .
[root@centos Documents]# gzip -l RemoteStuff.tar.gz
compressed uncompressed ratio uncompressed_name
2317140467 2326661120 0.4% RemoteStuff.tar
[root@centos Documents]#
Para demonstrar como o gzip difere dos utilitários do Windows Zip, vamos executar o gzip em uma pasta de arquivos de texto.
[root@centos Documents]# ls text_files/
file1.txt file2.txt file3.txt file4.txt file5.txt
[root@centos Documents]#
Agora vamos usar a opção -r para compactar recursivamente todos os arquivos de texto no diretório.
[root@centos Documents]# gzip -9 -r text_files/
[root@centos Documents]# ls ./text_files/
file1.txt.gz file2.txt.gz file3.txt.gz file4.txt.gz file5.txt.gz
[root@centos Documents]#
Vejo? Não o que alguns podem ter previsto. Todos os arquivos de texto originais foram removidos e cada um foi compactado individualmente. Por causa desse comportamento, é melhor pensar apenas no gzip quando precisar trabalhar com arquivos individuais.
Trabalhando com tarballs , vamos extrair nosso tarball rsynced para um novo diretório.
[root@centos Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
Como visto acima, extraímos e descompactamos nosso tarball no diretório / tmp.
[root@centos Documents]# ls /tmp
hsperfdata_root
RemoteStuff
Criptografar arquivos TarBall
Criptografar arquivos tarball para armazenar documentos seguros que podem precisar ser acessados por outros funcionários da organização, em caso de recuperação de desastre, pode ser um conceito complicado. Existem basicamente três maneiras de fazer isso: usar GnuPG ou usar openssl ou usar um utilitário de terceiros.
O GnuPG é projetado principalmente para criptografia assimétrica e tem uma associação de identidade em mente, em vez de uma senha longa. É verdade que pode ser usado com criptografia simétrica, mas esta não é a principal força do GnuPG. Portanto, eu desconsideraria o GnuPG por armazenar arquivos com segurança física quando mais pessoas do que a pessoa original podem precisar de acesso (como talvez um gerente corporativo que deseja se proteger contra um Administrador que possui todas as chaves do reino como vantagem).
O Openssl como o GnuPG pode fazer o que queremos e vem com o CentOS. Mas, novamente, não foi projetado especificamente para fazer o que queremos e a criptografia foi questionada na comunidade de segurança.
Nossa escolha é um utilitário chamado 7zip. 7zip é um utilitário de compactação como o gzip, mas com muitos outros recursos. Como Gnu Gzip, 7zip e seus padrões estão na comunidade de código aberto. Precisamos apenas instalar o 7zip de nosso Repositório EHEL (o próximo capítulo cobrirá a instalação dos Repositórios Corporativos Estendidos em detalhes).
Instale 7zip no Centos
7zip é uma instalação simples, uma vez que nossos repositórios EHEL foram carregados e configurados no CentOS.
[root@centos Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB 00:00:00
epel/x86_64/metalink
| 13 kB 00:00:00
epel
| 4.3 kB 00:00:00
extras
| 3.4 kB 00:00:00
updates
| 3.4 kB 00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB 00:00:04
(2/2):
epel/x86_64/primary_db
| 4.6 MB 00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
Simples assim, o 7zip está instalado e pronto para ser usado com criptografia AES de 256 bits para nossos arquivos tarball.
Agora vamos usar 7z para criptografar nosso arquivo compactado com uma senha. A sintaxe para fazer isso é muito simples -
7z a -p <output filename><input filename>
Onde, a: adicionar ao arquivo, e -p: criptografar e solicitar senha
[root@centos Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)
Creating archive: RemoteStuff.tgz.7z
Items to compress: 1
Enter password (will not be echoed):
Verify password (will not be echoed) :
Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[root@centos Documents]# ls
RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz RemoteStuff.tgz.7z slapD
text_files
[root@centos Documents]#
Agora, temos nosso arquivo .7z que criptografa o tarball compactado com AES de 256 bits.
Note- 7zip usa criptografia AES de 256 bits com um hash SHA-256 da senha e do contador, repetido até 512 mil vezes para derivação de chave. Isso deve ser seguro o suficiente se uma chave complexa for usada.
O processo de criptografar e recomprimir o arquivo ainda mais pode levar algum tempo com arquivos maiores.
7zip é uma oferta avançada com mais recursos do que gzip ou bzip2. No entanto, não é o padrão no CentOS ou no mundo Linux. Portanto, os outros utilitários devem ser usados com a maior freqüência possível.