Linux - Quais diretórios devo excluir ao fazer o backup de um servidor?

35

Estou fazendo backup de um servidor Linux e o armazeno em outro servidor.

Comecei com um simples

rsync -aPh --del server.example.com:/ /mnt/backup

Então alguém apontou que eu não deveria fazer o backup de /proc , já que você não quer restaurar o /proc de um servidor em outro.

Existe mais alguma coisa que eu deveria / não deveria incluir?

Por exemplo, e sobre /sys ?

    
por Rory 15.10.2009 / 10:59

14 respostas

24

Isso realmente depende de como você vai restaurar seu sistema. Se você for reconstruir, precisará dos arquivos de configuração / dados para seus serviços (por exemplo: / etc, / opt, / var, / home)

Se você está após uma restauração completa do sistema, então você pode omitir / proc, / boot & / dev. Em seguida, você pode instalar o sistema operacional mínimo a partir da mídia de inicialização e, em seguida, restaurar o sistema por meio do backup.

É claro que o melhor backup é aquele que foi testado e verificado .

Portanto, omita o que você acha que não precisa, tente restaurar em uma VM e verifique se pode recuperar o sistema usando esses dados.

    
por 15.10.2009 / 11:38
26

Tanto /proc como /sys são sistemas de arquivos virtuais que refletem o estado do sistema e permitem alterar vários parâmetros de tempo de execução (e às vezes fazem coisas mais perigosas, como gravar diretamente na memória ou em um dispositivo). Você nunca deve fazer backup ou restaurá-los.

Na maioria das distribuições modernas, /dev é dinamicamente criado na inicialização (é um sistema de arquivos de memória preenchido por udev e amigos). Não há sentido em fazer o backup, e tentar restaurá-lo é fútil. No entanto, se sua distribuição estiver configurada para usar um /dev estático, isso não se aplica (verifique /proc/mounts , se /dev for tmpfs , é um sistema de arquivos de memória).

Existem outros sistemas de arquivos que você não deve fazer backup; usbfs (geralmente em /proc/bus/usb , se montado em tudo), debugfs (deveria estar em /sys/kernel/debug se montado, mas algumas pessoas colocaram em outro lugar; você provavelmente não tem este), devpts (montado em /dev/pts ), outras instâncias tmpfs (geralmente encontradas em /dev/shm , /var/run , /var/lock e outros locais; fazer backup e restaurá-los deve ser inofensivo, mas sem sentido, pois seu conteúdo são perdidos no desligamento), e quaisquer sistemas de arquivos remotos ou diretórios mágicos automontantes (tentar fazer backup ou restaurá-los podem acabar em desastre, pois você pode acabar fazendo backup / restaurando para uma máquina diferente ). Você também deve ter cuidado com /media e /mnt , pois dispositivos externos (como um CD que você esqueceu na unidade) podem ser encontrados lá, mas você também pode usá-los propositadamente para montar algo que deve ser armazenado em backup.

Observe que, além das instâncias tmpfs inofensivas, sistemas de arquivos de rede / automounters e mídia removível, os sistemas de arquivos dos quais você não deve fazer backup são todos descendentes de /dev , /proc ou /sys . Se você não tiver sistemas de arquivos de rede (ou automounters) e nenhuma mídia removível, excluindo /sys e /proc e reinicializar após uma restauração (para limpar as instâncias tmpfs ), será suficiente.

    
por 16.10.2009 / 22:33
15

Veja O Tao do Backup , capítulo 1.

    
por 15.10.2009 / 14:20
7

Alguns dos arquivos especiais em / proc e / sys confundem o rsync. Você não quer fazer backup de sistemas de arquivos de rede montados, geralmente. Arquivos esparsos também podem causar problemas.

Adicione -x para limitá-lo a um sistema de arquivos. Isso evita todos os sistemas de arquivos de rede e / proc etc. No entanto, você precisa executar um rsync para cada sistema de arquivos montado.

Adicione -S para lidar com arquivos esparsos de maneira sensata.

    
por 15.10.2009 / 15:14
3

/ boot, / dev e / proc são completamente inúteis para backup - no entanto, se você souber o que está fazendo, poderá fazer backup / boot.

Eu também não faria backup / lib, / media, / mnt, / sbin, / bin, / srv, / sys ou / tmp.

/ usr é opcional, dependendo se você tem alguma coisa em / usr que valha a pena fazer backup. Se eu fosse você, eu me preocuparia mais com o backup das $ HOMEs do usuário, / var e / etc (para arquivos de configuração).

Novamente, tudo depende do tipo de backup que você deseja fazer. Isto é um servidor web? Isto é um computador pessoal? Este é um servidor shell com vários diretórios em / home?

    
por 15.10.2009 / 12:17
3

Você pode conseguir um backup total usando sfdisk e dd.

Para fazer o backup do esquema de partição de cada disco rígido, você usaria o sfdisk da seguinte forma:

sfdisk -d /dev/sda  > parttable_sda.part

Para fazer backup de cada partição, você pode usar o dd, assim:

dd if=/dev/sda1 of=devsda1.img

Onde /dev/sda1 é desmontado, como com uma inicialização de live-CD.

(tenha em mente que você vai precisar de muito espaço livre para escrever este arquivo; assim, você pode querer gravá-lo em uma mídia externa) Faça isso para cada partição, uma de cada vez, e de volta tudo para cima.

Em seguida, para restaurar em outro computador, você pode fazer:

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition
    
por 15.10.2009 / 16:08
2

Em vez de excluir, normalmente só faço backup do que eu quero. Incluindo: /home /etc /var (exceto /var/log )

    
por 16.10.2009 / 03:12
1

Basicamente, pseudo-sistemas de arquivos (/ proc, / sys, / dev / shm ...) não precisam de backup.

    
por 16.10.2009 / 21:58
1

Como apontado por esta grande comunidade:

/ dev / proc / sys / tmp / run / media / perdido + encontrado / boot (/ boot é opcional ver outros comentários)

Para referência, meu comando rsync final (em Arch com mídia externa montada em '/ run / media / fred / INTENSO /' e fazendo o backup em uma pasta chamada 'fred') é:

$ sudo rsync -Pazhmxv --excluir / executar / mídia --exclude / dev --exclude / lost + encontrado --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / fred / INTENSO / fred /.

(arquivos excluídos também podem ser especificados com chaves (--exclude = {/ dev, / proc}) no Bash ou com um arquivo de texto (--exclude-from = 'excude.txt')).

-P: mostra o progresso -a: modo de arquivo -z: comprimir durante a transferência -h: números de saída em um formato legível por humanos -m: podar diretórios vazios -x: limite para um sistema de arquivos -v: verbose

    
por 07.06.2017 / 20:04
1

Estou em uma máquina Ubuntu 18.04 e excluí essas:

/dev/
/proc/
/sys/
/tmp/
/run/
/mnt/
/media/
/lost+found/
/cdrom/
/swapfile

Além disso, especificamente para minha configuração, excluo estes:

/home            <-- Backed up separately
/backup          <-- Mount point for backup disks
/data            <-- Mount point for data disks, which are backed up off-site
/scratch         <-- Mount point for volatile fast SSD scratch disk
    
por 20.06.2018 / 09:51
0

Eu geralmente tenho o hábito de fazer backup de tudo em um sistema, até mesmo as coisas que eu sei com certeza são inúteis para backup. É mais simples de configurar e você pode ter 100% de certeza de que obterá tudo o que precisa incluir no backup.

    
por 15.10.2009 / 14:11
0

Estou usando uma caixa Linux Ubuntu como servidor de teste para desenvolvimento de sites, e hospedando um wiki de documentação. Toda noite, um crontab despeja o banco de dados MySQL em / var / www e, em seguida, todo o / var / www é compactado e replicado para o servidor de backup. Não é o ideal, mas é o suficiente. Eu tive que reconstruir o servidor em um ponto, e tudo que eu realmente senti falta foram os arquivos de configuração do Apache e do Samba.

    
por 19.10.2009 / 04:03
0

Eu diria que você não tem o Linux em uma máquina virtual. Se for possível, peço que considere mudar para a virtualização. Os backups no nível da vm são um novo nível de consistência e facilidade de uso. Existem ferramentas de virtualização gratuitas, de modo que você não precisa necessariamente investir no VmWare ou em outras ferramentas caras de monstros.

    
por 07.06.2017 / 21:48
0

Pergunta: Quais diretórios devo excluir ao fazer o backup de um servidor?

Aqui está um script que eu uso com frequência, de um laptop Ubuntu 16.04 LTS a um servidor Ubuntu 16.04 LTS. Ele mostra claramente quais diretórios devem ser ignorados ao fazer um backup completo:

echo "EMPTYING TRASH"
rm -rf ~/.local/share/Trash/* >/dev/null 2>&1
echo "DELETING OLD LOGS"
sudo rm -f /var/tmp/* >/dev/null 2>&1
sudo rm -f /var/log/*.gz >/dev/null 2>&1
sudo rm -f /var/log/kern* >/dev/null 2>&1
sudo rm -f /var/log/messages* >/dev/null 2>&1
echo "DELETING CHROMIUM CACHE"
rm -rf /home/pi/.cache/chromium/Default/Cache/* >/dev/null 2>&1
echo "====================================================================="
echo "      BEGINNING RSYNC from PAV root to PRIME5:/mnt/full/pav"
echo "====================================================================="
time sudo rsync -aAXv \
          / \
          --bwlimit=500 \
          --delete \
          --delete-excluded \
          --ignore-errors \
          --exclude="/dev/*" \
          --exclude="/proc/*" \
          --exclude="/sys/*" \
          --exclude="/tmp/*" \
          --exclude="/run/*" \
          --exclude="/mnt/*" \
          --exclude="/media/*" \
          --exclude="/lost+found" \
          abc@prime5:/mnt/full/pav
echo "====================================================================="
df -h

Observe a exclusão de /mnt - que é onde cada sistema Ubuntu possui uma unidade de backup em tempo integral montada para backups de rsync baseados em cronograma 4 vezes por dia. Essas unidades são montadas por entradas em fstab e estão sempre presentes. Incluí-los em um backup para outro sistema seria duplicativo.

Da mesma forma, /media é onde as unidades USB são montadas. Eles são copiados separadamente.

    
por 16.06.2018 / 06:45