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

37

Estou fazendo backup de um servidor Linux e armazenando-o 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 backup /proc, pois você não deseja restaurar o /procservidor de um servidor em outro.

Há algo mais que eu deva / não inclua?

Por exemplo, o que dizer /sys?

Rory
fonte

Respostas:

24

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

Se você estiver após uma restauração completa do sistema, poderá omitir / proc, / boot & / dev. Em seguida, você pode instalar o sistema operacional mínimo da mídia de inicialização e restaurar o sistema através do backup.

Obviamente, 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 você pode recuperar seu sistema usando esses dados.

Wayne
fonte
5
Não omita /bootcompletamente - talvez seja necessário comparar a configuração de inicialização antiga com a nova. Apenas certifique-se de não restaurar, /boot exceto manualmente.
quack quixote
5
E exclua / sys também ... E para restaurar o bare metal, é melhor excluir /etc/udev/rules.d/ também.
Wazoox 15/10/09
2
também perdi + achei que, para o sistema de arquivos, / mnt e / media não copiar nenhum dispositivo montado #
blade
29

Ambos /proce /syssã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 fazer coisas mais perigosas, como escrever diretamente para a memória ou para um dispositivo). Você nunca deve fazer backup ou restaurá-los.

Na maioria das distribuições modernas, /devé criado dinamicamente na inicialização (é um sistema de arquivos de memória preenchido por udeve amigos). Não há motivo para fazer backup e tentar recuperá-lo é inútil. No entanto, se sua distribuição estiver configurada para usar uma estática /dev, isso não se aplicará (verifique /proc/mountsse /devé um tmpfssistema 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(supostamente em /sys/kernel/debugcaso de montagem em tudo, mas algumas pessoas colocá-lo em outro lugar, você provavelmente não tem este), devpts(montado na /dev/pts), outros tmpfscasos (frequentemente encontrada em /dev/shm, /var/run, /var/locke outros locais; fazer backup e restaurá-los deve ser inofensivo, mas inútil, pois seu conteúdo é perdido no desligamento) e quaisquer sistemas de arquivos remotos ou diretórios mágicos de montadores automáticos (tentar fazer backup ou restaurá-los pode acabar em desastre, como você pode acabar fazendo backup / restaurando em uma máquina diferente ). Você também deve ter cuidado com /mediae/mnt, pois os dispositivos externos (como um CD que você esqueceu na unidade) podem ser encontrados lá, mas você também pode usá-los de propósito para montar algo que deve ser copiado.

Note-se que, com excepção principalmente inofensivos tmpfscasos, sistemas de arquivos de rede / automounters e mídia removível, os sistemas de arquivos que você não deve back-up são todos descendentes de /dev, /procou /sys. Se você não tem sistemas de arquivos de rede (ou automounters), e há uma mídia removível, excluindo /syse /proce reiniciar após uma restauração (para limpar as tmpfsinstâncias) deve ser suficiente.

CesarB
fonte
8

Alguns dos arquivos especiais em / proc e / sys confundem o rsync. Você também não deseja fazer backup de sistemas de arquivos de rede montados. 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, é necessário executar um rsync para cada sistema de arquivos que você montou.

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

pjc50
fonte
4

/ boot, / dev e / proc são bastante inúteis para fazer 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 de você ter algo em / usr que valha o backup. Se eu fosse você, eu me preocuparia mais com o backup de $ HOMEs, / var e / etc do usuário (para arquivos de configuração).

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

Michael Pobega
fonte
Eu gostaria de restaurar pelo uso clonagem do backup para uma nova máquina
Rory
O que você quer dizer com "clonagem"? Você sempre pode fazer backup das partições brutas usando dd e sfdisk sfdisk -d> partition_table.part dd if = / dev / sda1 of = dev.sda1.img (faça isso para cada partição) e, em seguida, no seu novo sistema: sfdisk / dev / sda <partition_table.part dd if = dev.sda1.img de = / dev / sda1 (para cada partição, de novo)
Michael Pobega
Como o sistema de comentários não gosta de tags de código, postei outra resposta.
22610 Michael Pobega
@MichaelPobega Se você fizer backup de partições brutas como está dizendo, precisará copiar todo o tamanho do disco. Por que copiar 512 GB quando você usa apenas 80 GB do seu disco? Com rsyncvocê, não apenas copie apenas o que você usou, mas também habilite a sincronização futura, para que você possa executar com segurança um trabalho cron.
Max
Voltando a isso anos mais tarde, minha década de experiência me ensinou que você está correto no @Max.
Michael Pobega
3

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


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

sfdisk -d /dev/sda  > parttable_sda.part

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

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

Onde /dev/sda1está desmontado, como na inicialização de um CD ao vivo.

(lembre-se de que você precisará ter muito espaço livre para gravar esse arquivo; portanto, você pode gravá-lo em uma mídia externa). Faça isso para cada partição, uma de cada vez, e faça backup de tudo.


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

sfdisk /dev/sda < parttable_sda.part
dd if=devsda1.img of=/dev/sda1    # do this for each partition
Michael Pobega
fonte
3
AVISO: faça isso apenas se a partição estiver desmontada ou montada somente leitura. Despejar o conteúdo bruto de uma partição enquanto ela está sendo gravada pode acabar com um sistema de arquivos inconsistente no backup (porque os blocos próximos ao início do sistema de arquivos são copiados "mais cedo" do que os blocos próximos ao final, e os algoritmos do sistema de arquivos não espere isso; você pode evitar esse problema se, de alguma forma, puder fazer um instantâneo atômico do sistema de arquivos). O fsck não o ajudará, pois seus algoritmos também dependem da ordem em que o sistema de arquivos grava no disco.
CesarB
dd é o caminho a percorrer. Inicialize em um LiveCD, é claro. E é importante dd if=/dev/urandom of=/dev/sdb bs=512 count=12limpar o MBR e a tabela de partição da unidade de destino.
SDsolar
2

Em vez de excluir, geralmente faço backup apenas do que quero. Incluindo: /home /etc /var(exceto /var/log)

DennyHalim.com
fonte
1

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

sendmoreinfo
fonte
1

Como apontado por esta grande comunidade:

/ dev / proc / sys / tmp / run / media / lost + found / boot (/ boot é opcional, veja outros comentários)

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

$ sudo rsync -Pazhmxv --exclude / run / media --exclude / dev --exclude / lost + found --exclude / tmp --exclude / proc --exclude / boot --exclude / sys / / run / media / / INTENSO / fred /.

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

-P: mostre o progresso -a: modo de arquivamento -z: comprima durante a transferência -h: imprima números em um formato legível por humanos -m: remova diretórios vazios -x: limite para um sistema de arquivos -v: detalhado

Fred Christophe
fonte
1

Estou em uma máquina Ubuntu 18.04 e tenho estes excluídos:

/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
user2724383
fonte
0

Geralmente, tenho o hábito de fazer backup de tudo em um sistema, mesmo o que eu sei com certeza é inútil. É mais simples de configurar e você pode ter 100% de certeza de que vai incluir tudo o que precisa no backup.

Maximus Minimus
fonte
11
Sim, mas a pergunta de acompanhamento é o que você remove do backup como desnecessário?
Rory
Ao qual eu responderia: "nada".
Maximus Minimus
Verdade. Você o exclui do processo de restauração, não o backup em si. Mas você provavelmente ainda quer deixar de fora /proce /devnão confundir o pobrezinho rsync.
TJ Crowder
11
@mh, você restauraria / proc / kcore, que é a memória do servidor original? que soa um pouco bobo ...
Rory
0

Estou usando uma caixa Linux linux como servidor de teste para desenvolvimento de sites e para hospedar um wiki de documentação. Toda noite, um crontab despeja o banco de dados MySQL em / var / www e, em seguida, todos os / var / www são compactados e replicados no servidor de backup. Não é o ideal, mas é o suficiente. Eu tive que reconstruir o servidor em um ponto e tudo o que realmente senti falta eram os arquivos de configuração do Apache e Samba.

Nic
fonte
0

Eu diria que você não tem Linux em uma máquina virtual. Se possível, eu recomendaria a possibilidade de mudar para a virtualização. Os backups no nível vm são um nível totalmente novo de consistência e facilidade de uso. Existem ferramentas de virtualização gratuitas, portanto você não precisa necessariamente investir no VmWare ou em outra ferramenta monstro cara.

Gnudiff
fonte
0

Pergunta: Quais diretórios devo excluir ao fazer 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 rsyncauto-backups baseados em cron 4 vezes por dia. Essas unidades são montadas por entradas fstabe estão sempre presentes. Incluí-los em um backup para outro sistema seria duplicado.

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

SDsolar
fonte