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!