O que pode du ver que rsync não pode?
-
10-07-2019 - |
Pergunta
Eu quero copiar um servidor linux inteira que vai ser desactivado através da rede assim temos a certeza nada está perdido.
Eu fiz du /
e foi dito há 60 GB de sub /
Então eu fiz rsync -r / root@newserver:/old-server
e ao fazer du
na dir old-server
eu tenho 22 GB.
Então, por que é que a diferença? Existe algo que du
pode ver, mas rsync
não pode copiar?
Solução
Você provavelmente já apagou arquivos que ainda não pode ser desalocadas porque há filehandles abertos sobre eles. (I anteriormente não sabem que du veria o uso daqueles, mas alguns testes mostraram que ele faz.) Você pode pesquisar isso usando lsof . As duas principais causas deste da minha experiência está excluindo Apache logs sem chutar o httpd e excluir tabelas do MySQL a partir do sistema de arquivos em vez de usar DROP TABLE.
Outras dicas
Se você tem um pouco de tempo em suas mãos, você pode descobrir exatamente qual é a diferença: cd /; find . > /tmp/old
prazo no servidor antigo, cd /old-server; find . > /tmp/new
no novo servidor, então vimdiff
os dois arquivos para ver o que mudou <. / p>
Há algumas sistemas de arquivos especiais que você deve evitar a cópia com rsync
, por exemplo, /proc
, /sys
, /tmp
. Eles podem explicar a diferença que você vê, embora, ao que parece muito grande de qualquer maneira.
Pode haver alguns diretórios ilegíveis (por exemplo, sem r
ou x
sobre eles). Não me lembro se o processo correr com direitos root
pode acessar essas listas sem fixar permissões em primeiro lugar.
Melhor gerar e comparar lista de arquivos e suas somas md5.
Algumas sugestões:
- arquivos esparsos (uso -S)
- hard links (uso -H)
-
/proc
e/sys
(use --exclude, ou melhor, -x e backup cada sistema de arquivos separadamente)
I tendem a usar rsync -axHSW --numeric-ids
em circunstâncias semelhantes.