Backup agendado do servidor inicial

0

Estou usando o Ubuntu 14.04.4 LTS como servidor NAS doméstico. Eu já fiz alguns scripts rsync programados para fazer backup de minhas fotos, documentos, etc. em uma unidade externa.

Eu quero fazer o mesmo com todo o sistema, como clonar a partição "/" para aquela unidade externa on-the-fly, ou após uma reinicialização automática semanalmente.

Existe algum método para isso que pode ser automatizado com um trabalho cron ?

Obrigado antecipadamente!

    
por Paleee 04.04.2016 / 14:05

1 resposta

1

Você pode fazer o que quiser com um único comando, com advertências.
Leia em.

NOTICE : O que segue é quase integralmente citado de este archlinux wiki .org . Apresentei apenas algumas mudanças na redação e no formato aqui e ali, mas nada substancial. Todo o mérito vai definitivamente para os mantenedores e colaboradores do excelente wiki.archlinux.org.

Esse comando depende da expansão de chaves disponível nas conchas bash e zsh . Ao usar um shell diferente, os padrões --exclude devem ser repetidos manualmente.

$ rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /path/to/backup/folder

Usando o conjunto de opções -aAX , os arquivos são transferidos no modo de arquivamento, garantindo que links simbólicos, dispositivos, permissões e propriedades, tempos de modificação, ACLs e atributos estendidos sejam preservados.

A opção --exclude fará com que os arquivos que correspondem aos padrões especificados sejam excluídos.
O conteúdo de /dev , /proc , /sys , /tmp e /run foi excluído porque eles são preenchidos na inicialização (enquanto as próprias pastas não são criadas), /lost+found é específico do sistema de arquivos.
Citando os padrões de exclusão evitará a expansão por shell, o que é necessário, e. ao fazer backup do SSH.
Terminar os caminhos excluídos com * ainda garantirá que os próprios diretórios sejam criados, se já não existirem.

Nota:
- Se você planeja fazer backup de seu sistema em algum lugar diferente de /mnt ou /media , não se esqueça de adicioná-lo à lista de padrões de exclusão para evitar um loop infinito.
- Se houver alguma montagem de ligação no sistema, eles também deverão ser excluídos, para que o conteúdo montado da ligação seja copiado apenas uma vez.
- Se você usar um arquivo de troca, certifique-se de excluí-lo também.
- Considere também se você realmente deseja fazer o backup da pasta /home/ . Se ele contiver dados do usuário (por exemplo, em um sistema operacional de desktop), ele poderá ser consideravelmente maior que o próprio sistema e NÃO será relevante para o próprio sistema de backup.
- Caso contrário [por exemplo em uma máquina servidor] considere a exclusão de subdiretórios sem importância, como /home/* , /.thumbnails/* , /home/*/.cache/mozilla/* , /home/*/.cache/chromium/* , /home/*/.local/share/Trash/* , dependendo do software instalado no sistema. Se o GVFS estiver instalado, /home/*/.gvfs deve ser excluído para evitar erros de rsync.

Se você quiser fazer isso em um cron job, por exemplo, na reinicialização, use a diretiva @reboot na tarefa cron em vez de um dia ou horário específico. Por exemplo, a tarefa cron a seguir executa o arquivo de script script.sh uma vez somente após a reinicialização do sistema:

No terminal (CTRL + ALT + T), de uma conta de usuário não raiz:

$ crontab -e
@reboot /absolute/path/to/script.sh

Para programar o trabalho como um trabalho cron do root:

$ sudo -e crontab -e
@reboot /absolute/path/to/script.sh

Lembre-se de especificar o caminho completo para o arquivo que você deseja executar no cron job.
Para obter mais informações sobre a diretiva @reboot e outras diretivas que você pode usar em tarefas agendadas, digite o seguinte comando no prompt de comando:

$ man 5 crontab

Seu script deve se tornar executável.

$ sudo chmod +x /absolute/path/to/script.sh

Se você planeja ativá-lo a partir de uma regra do udev em vez de uma tarefa do cron, execute o rsync cmd em segundo plano, assim:

$ cat script.sh
#!/bin/bash
{
/usr/bin/rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /path/to/backup/folder
} &
exit 0

Lembre-se Startpage é amigo!

    
por Cbhihe 05.04.2016 / 08:17