Copie (quase) todo o sistema de arquivos com o mínimo de esforço

1

Alguns meses atrás eu mudei de VPS para servidor dedicado, no entanto todo esse tempo eu não encontrei tempo para realmente passar por todos os arquivos que eu poderia precisar novamente, copiá-los e desligar o VPS.

Como posso copiar todo o sistema de arquivos (exceto talvez para arquivos de sistema que eu não precisarei de qualquer maneira) sem desligar o VPS, preferencialmente direto para uma máquina online diferente (servidor dedicado), com o mínimo esforço?

Eu tenho acesso root a ambas as máquinas através do SSH, mas não consigo acessar os discos rígidos físicos.

    
por Robus 27.07.2015 / 19:05

1 resposta

3

O sistema de arquivos em si provavelmente não pode ser copiado online, já que está mudando o tempo todo.

Você pode copiar os arquivos, preservando praticamente tudo sobre cada arquivo, dentro do sistema de arquivos com bastante facilidade. Experimente rsync do seu servidor dedicado:

rsync -avzHXShPs --exclude sys/ --exclude dev/ --exclude proc/ root@VPS:/ /path/to/backup_folder/

, onde VPS é o endereço IP do seu VPS e /path/to/backup_folder/ é a pasta de destino em seu servidor dedicado.

Se o seu VPS tiver uma porta SSH diferente, você pode fazer isso:

rsync -avzHXShPs -e "ssh -p PORT" --exclude sys/ --exclude dev/ --exclude proc/ root@VPS:/ /path/to/backup_folder/

, em que PORT é o número da porta personalizada.

Se você quiser transferir quaisquer arquivos alterados desde o início da transferência de arquivos, basta executar o mesmo comando novamente. Se os arquivos foram excluídos do VPS e você deseja que os arquivos excluídos sejam removidos do backup em seu servidor dedicado, basta adicionar o sinalizador --delete à linha rsync .

Explicação

rsync flags

  • -a significa "arquivo", que contém a maioria das configurações para fazer cópias quase exatas de todos os arquivos em uma pasta especificada (no seu caso, / no VPS).
  • -v significa "detalhado". Ele mostrará informações detalhadas sobre o que está sendo copiado.
  • -z significa "comprimir", o que é útil ao copiar na rede, pois a velocidade da rede é geralmente mais lenta do que as unidades, e você pode economizar tempo enviando dados compactados pela rede.
  • -H significa "links físicos", que preservam os links físicos, se eles forem importantes para você.
  • -X significa "atributos estendidos", que preserva os atributos estendidos. Isso não funciona em todos os sistemas de arquivos, mas rsync continuará, mesmo se houver erros ao copiar os atributos estendidos.
  • -S significa "esparso", o que é muito útil para acelerar a transferência de arquivos que contêm muitos zeros binários.
  • -h significa "legível por humanos", que produz informações legíveis por humanos durante a transferência.
  • -s significa "proteger argumentos", útil apenas se seus argumentos de origem ou destino tiverem espaços no caminho.

Eu tenho uma tecla de atalho para digitar essa linha rsync porque copio muito os dados e é conveniente ter todos esses sinalizadores na maior parte do tempo.

rsync exclui

  • --exclude sys/ exclui a sysfs de montagem em /sys . Sem isso, você pode encontrar algumas estranhezas como recursão infinita ou arquivos de tamanho infinito.
  • --exclude dev/ exclui a devtmpfs de montagem em /dev , o que não seria útil em seu servidor dedicado (e pode até ser a risco de segurança , pois os dispositivos são completamente diferentes nos dois servidores diferentes.
  • --exclude proc/ exclui a proc de montagem em /proc . As informações do sistema nesta pasta aplicam-se apenas ao servidor original.
por 27.07.2015 / 21:08