Esta pergunta responde à pergunta de como eu uso um computador externo para criar um backup do meu RPi.
Gostaria de saber se posso criar uma imagem de backup do cartão SD atualmente em uso e copiá-la para um arquivo em um dispositivo de armazenamento USB. Isso é possível? Caso contrário, existe alguma maneira de criar um backup de uma RPi sem envolver outro computador?
dd
, investiguersync
.dd
cópia com um tamanho de bloco apropriado provavelmente será mais rápido para uma cópia "nova". Fazer uma cópia de arquivo por arquivo em mídia flash / SD provavelmente é uma má idéia.Respostas:
Aqui está uma introdução ao uso
rsync
para backup no Pi. Depois que o backup inicial é criado, mantê-lo atualizado dessa maneira é muito mais rápido do que rasgar constantemente a imagem inteira. Você pode fazer isso em um disco rígido local ou em uma rede.Na verdade, você não deseja uma cópia completa de um sistema em execução como backup, pois algumas das coisas ostensivamente existentes no sistema de arquivos existem apenas em tempo de execução. Incluir isso em um backup e usá-lo para recriar uma imagem posteriormente pode criar problemas para você.
Existem outras exceções também.
rsync
pode aceitar uma lista de padrões ( glob ) a serem excluídos e esses podem ser lidos a partir de um arquivo, então vamos primeiro examinar o que deveria estar nesse arquivo. Observe que as entradas são do formato/directory/*
e não/directory
. Isso ocorre porque queremos que eles existam, mas não queremos copiar nada neles.Eles realmente não existem no disco. Eles são uma interface para o kernel, que os cria e mantém na memória . Se você copiá-los e depois copiá-los de volta para um sistema e inicializá-lo, será (na melhor das hipóteses) sem sentido, pois o kernel os usa como pontos de montagem para as interfaces. em um diretório com dados, tente. Funciona e não causa nenhum dano, mas as coisas que estavam no diretório agora estão inacessíveis.]
Observe que é essencial que os pontos de montagem
/sys
e/proc
existam. Mas eles não devem conter nada. Próximo:O
dev
diretório não é exatamente a mesma coisa queproc
e,sys
mas para nossos propósitos, é. Se você acredita que deve salvar isso para poder ter os mesmos nós de dispositivo em seu backup ou algo assim, está errado . Não se incomode. Não copiedev
. Há muito tempo, o Linux funcionava dessa maneira, mas não funciona mais.Esse é um caso especial com a maioria (talvez todas) das distros específicas do Pi, como o Raspbian. Na verdade, é um ponto de montagem para a primeira partição vfat. Nós vamos lidar com isso separadamente. Faça o que fizer, não se preocupe em incluí-lo aqui, porque, novamente, é um ponto de montagem.
/run
geralmente também não está no disco, está na memória. Talvez/tmp
possa ser muito (isso economizaria um pouco de ação do cartão SD), mas, em qualquer caso, como os nomes sugerem, esses não são locais para armazenar dados persistentes. Os aplicativos que os utilizam esperam que sejam excluídos a cada inicialização.Isso é importante principalmente se você planeja fazer backup em um disco rígido ou pendrive e o dispositivo está dentro
/mnt
ou/media
(a montagem automática tende a usar o último), porque se você não excluir a localização desses dispositivos no sistema de arquivos, crie um loop fazendo backup do conteúdo da unidade para si mesma, até que fique sem espaço. Eu acho quersync
pode ser inteligente o suficiente para identificar algo tão estúpido, mas tente evitar testar a premissa.Para o backup real: Crie um diretório para fazer backup no disco rígido montado localmente, no dispositivo USB etc. - por exemplo, "pi_backup". Você pode alternativamente fazer backup em um local remoto via
ssh
(veja abaixo) ou usando um sistema de arquivos montado em rede, mas isso provavelmente levará um tempo na primeira vez.Se o arquivo que contém a lista a excluir for
/rsync-exclude.txt
1 e sua unidade for/mnt/usbhd
, faça o backup real:Observe que há uma barra final
pi_backup/
.Isso levará um tempo e produzirá muita saída (se você quiser examinar isso em um log, acrescente
> rsync.log
).--delete
não faz sentido na primeira vez, mas para manter o backup atualizado, use-o. Isso garante que as coisas que você excluiu posteriormente no Pi também sejam removidas do seu backup. Osa
conjuntos recursão em diretórios e garante que todos os atributos do arquivo correspondam.-H
é preservar os links físicos 2 ,v
é detalhado, e é por isso que você obtém alguma saída (caso contrário,rsync
é silencioso). Vejaman rsync
para mais.Há um atalho pelo qual você pode pular o
--exclude-from
arquivo. Se você tem certeza de que todas as coisas que não deseja copiar (/tmp
etc.) estão em sistemas de arquivos separados, basta usar:-x
foi inserido. Esta é a forma abreviada de--one-file-system
, que indicarsync
para não ultrapassar os limites do sistema de arquivos. Pessoalmente, prefiro o--exclude-from
, mas, por exemplo, o Raspbian padrão,--one-file-system
funcionará bem. Você pode usar os dois se quiser ter-x
cuidado: DEsse não é um backup completo. É o suficiente se você não colocou nada
boot
e não tem problema em usar o backup para restaurar o sistema colocando o cartão em um computador e executando:Você também pode fazer isso com um cartão com uma nova imagem (presumindo que seja a mesma da sua imagem base), embora isso seja um pouco ineficiente se você precisar criar a imagem (porque você substituirá a maior parte dela). Você também pode conectar outro cartão SD através de um adaptador USB com essa imagem e usar o método acima para manter um cartão duplicado.
Se você colocou coisas
/boot
(por exemplo, um kernel personalizado), inclusive/boot/config.txt
, também será necessário fazer o backup (bastante simples - não há muito). Faça-o separadamente e, quando você restaurar, esse material será colocado na primeira partição.Veja aqui se você deseja criar uma imagem em branco do estilo Raspbian na qual possa fazer backup. Você pode usar uma metodologia semelhante para criar uma placa de estilo Raspbian vazia - ao invés de lidar com um
.img
arquivo, você estaria lidando com um dispositivo real (por exemplo/dev/sdb
), o que significa que tudo o que você precisa fazer é criar a tabela de partiçãofdisk
e, em seguida, formato/dev/sdb1
esdb2
(ou o que for) commkfs
.Mas copiar toda a imagem é mais fácil! Por que se preocupar com isso?
Não é tão difícil; Eu restaurei para um cartão em branco (formatado de acordo com o último link) em 10 minutos. Sim, apenas usar
dd
tudo é mais simples (se você achar coisas como palavras confusas ...), MAS leva um bom tempo toda vez que você deseja atualizar seu backup, porque você deve fazer 100% dele sempre. Usandorsync
, uma vez que um backup existe, atualizá-lo é muito, muito mais rápido, para que você possa configurar isso para acontecer sem problemas todos os dias via cron. Em uma rede mesmo. A cada seis horas. Quanto mais você faz isso, menos tempo levará.rsync
através dassh
Aqui está um exemplo:
"Opções" seria, por exemplo,
-av --delete --exclude-from=/rsync-exclude.txt
e "ssh options" é o que você normalmente usa (se houver). Você deve ter acesso root viassh
para fazer isso, para efeitos de um backup do sistema (definidoPermitRootLogin=yes
em/etc/ssh/sshd_config
e reinicie o servidor).1 Você deve manter este arquivo. Você pode colocar comentários nas linhas que começam com
#
ou;
. Isso pode incluir orsync
comando real , que pode ser copiado e colado posteriormente, para que você não precise se lembrar sempre.2 Obrigado a Kris por apontar
rsync
não faz isso automaticamente.fonte
mkdir /tmp/backupable && mount --bind / /tmp/backupable
e rsync isso? Isso também tem a vantagem de fazer backup de todos os dados armazenados em locais "sombreados" por algo montado lá.--exclude-from
é uma ideia melhor. Se tiver tempo, você pode escrever isso como uma resposta separada, você tem o meu voto e eu posso fazer referência a isso. Essa resposta é longa demais..img
você pode; isso e isso deve ajudar a explicar como eles são estruturados e podem ser criados.Um script de trabalho da comunidade Raspberry feito por um membro lá.
Você pode reutilizar e ajustar o código como desejar. É bem documentado e auto-explicativo.
Considere adicionar comentários ao fórum original ou publique sua própria versão para ajudar a amadurecer o conteúdo. Tome um pouco, dê um pouco.
* E obrigado por devolver o AndersW (clique no script GIT)
fonte
rsnapshot
soa promissorrsync
é o caminho a percorrer; quando tiver tempo amanhã, adicionarei uma resposta.rsnapshot
também vale a pena investigar.Adaptei a resposta @goldilocks no rsync para fazer backup no pi. Eu faço backup em uma
ext4
partição em um disco rígido montado no Pi. Se o HDD não estiver montado, o rsync copiará para o diretório de montagem (até o cartão SD estar cheio). Se o HDD não estiver montado norw
modo, serão produzidas copiosas mensagens de erro. Nenhuma dessas opções é desejável, portanto, verifico se minha partição está montada norw
modo antes de prosseguir.OBSERVAÇÃO 2015-03-03 Modifiquei minha resposta para copiar com precisão os hardlinks. O original funcionou, mas converteu muitos hardlinks em arquivos. Além de desperdiçar espaço, isso compromete muitos usos que pressupõem que os hardlinks estão no lugar. (Minha imagem atual possui 869 links, muitos deles em Raspbian.)
Meu script para fazer isso segue. (Minha partição está
PiData
montada em/mnt/PiData
Restaure (ou atualize outro Pi) com o seguinte: -
Eu aprimorei o
rsync-exclude.txt
para eliminar arquivos desnecessários.O primeiro grupo são os diretórios documentados por @goldilocks https://raspberrypi.stackexchange.com/users/5538/
O segundo grupo são os arquivos e diretórios criados pelo OS X quando eu acesso o meu Pi usando o AFP (Apple Filing Protocol). (Normalmente, eles são invisíveis no OS X, mas não no Raspbian. De qualquer forma, não há necessidade de fazer backup.) Mesmo que você nunca use o AFP, isso não causará danos.
O terceiro grupo são arquivos que não precisam de backup (e certamente não são copiados para outro Pi). Exemplos fake-hwclock.data, relatórios do RPi-Monitor. Você provavelmente terá outros.
fonte
Eu tenho três Pis em execução na minha rede local e preciso fazer backup deles regularmente com o cron quando eles estiverem funcionando. Por isso, criei um script capaz de criar backups de dd, tar e rsync e restaurá-los. Eu prefiro usar o rsync para meus backups, mas outras pessoas preferem dd ou tar. Já é usado por muitas pessoas. Espero que seja útil para outros também :-) raspibackup - Raspberry cria backups de si mesmo
fonte
Aqui está nossa ferramenta estável para esses fins: https://github.com/aktos-io/aktos-dcs-tools
Esta ferramenta é escrito para
make ssh
conexões,make backup-root
,make mount-root
a partir de locais remotos em mente no início, e, em seguida, são adicionados sessões locais. Portanto, ele suporta backups locais, backups remotos diretos, backups remotos por proxy. Os backups são feitos de forma incremental (apenas as diferenças são transferidas) e os diretórios de backup são independentes (basta escolher um diretório / versão para restaurar, qualquer diretório possui um backup completo). Obviamente, você tem versões (backup.last-0 é a mais recente). Você pode interromper o processo de backup a qualquer momento e continuar mais tarde.Aqui estão as instruções para o seu problema específico:
EDITAR
Agora há um novo destino adicionado: você pode criar um cartão SD físico a partir dos seus backups com um comando:
Siga as instruções, crie seu cartão SD, inicie o RaspberryPi com este cartão SD recém-criado.
fonte
Aqui está uma abordagem completamente diferente. Você pode usar LVM ( L ogical V olume M anager) para fazer backups consistentes. Além de outras melhorias, como fácil adição, expansão e redução de armazenamento ou restauração do sistema operacional para um status anterior a partir de um instantâneo, você também pode fazer backups. Você não precisa se preocupar com arquivos dinâmicos alterados durante o backup, configurando sistemas de arquivos somente leitura, excluindo diretórios específicos ou qualquer outra coisa. Com o LVM, você simplesmente cria um instantâneo, monta esse instantâneo e faz backup com o método que preferir. Você pode copiar
cp -a
, espelharrsync
, arquivartar
ou criar uma imagem comdd
. Supondo que você montou um dispositivo de backup,/mnt/usbhd/pi_backup/
você pode fazer, por exemplo:Leva apenas uma vez um pouco de esforço para configurar o LVM . Como fazer isso, você pode ver os backups e as capturas instantâneas fáceis de um sistema em execução com o LVM .
fonte
Encontrei uma ferramenta de backup que cria imagens instaláveis.
Ele também possui utilitários para montar e reduzir imagens.
Isso pode ser útil para outras pessoas
A documentação que acompanha é muito breve, portanto, observe o seguinte: -
ext4
partição formatada no seu Pi em/mnt
ou/media
(qualquer formato que permita arquivos grandes e seja suportado pelo Pi, por exemplo, exFAT ou uma unidade de rede pode ser usado)./mnt/Image/BusterBackup.img
Modifiquei levemente o original (para copiar pontos de montagem), para calcular corretamente os desvios e tamanhos das partições e adicionei alguns comentários.
fonte
Abra o terminal e digite 'lsblk -f'.
Isso deve mostrar todos os dispositivos de armazenamento conectados.
Em seguida, digite 'dd if = / dev / [o NOME do seu cartão sd] bs = 1M'.
Isso levará um tempo, portanto você pode executá-lo em segundo plano.
É exatamente da mesma maneira que você faz o backup do seu cartão SD no Linux.
fonte