Что вы можете увидеть, что rsync не может?

Я хочу скопировать весь сервер Linux, который будет выведен из эксплуатации по сети, поэтому мы уверены, что ничего не потеряно.

я сделал du / и было сказано, что есть 60 ГБ под /

Тогда я сделал rsync -r / root@newserver:/old-server и при выполнении du в old-server Дир, я получил 22 ГБ.

Так почему же эта разница? Есть ли что-то, что du могу видеть, но rsync не можете скопировать?

4 ответа

Решение

Возможно, вы удалили файлы, которые еще не могут быть освобождены, потому что на них есть открытые файловые дескрипторы. ( Раньше я не знал, что du увидит их использование, но некоторые тесты показали, что это так.) Вы можете исследовать это с помощью lsof. По моему опыту, двумя основными причинами этого являются удаление журналов Apache без использования httpd и удаление таблиц mysql из файловой системы вместо использования DROP TABLE.

Есть несколько специальных файловых систем, которые вы должны избегать копирования rsync, например, /proc, /sys, /tmp, Они могут объяснить разницу, которую вы видите, хотя в любом случае она кажется слишком большой.

Там могут быть некоторые нечитаемые каталоги (например, без r или же x на них). Я не помню, работает ли процесс с root права могут получить доступ к таким каталогам без предварительного разрешения прав доступа.

Лучше сгенерируйте и сравните список файлов и их суммы md5.

Если у вас есть немного времени, вы можете понять, в чем именно разница: бежать cd /; find . > /tmp/old на старом сервере, cd /old-server; find . > /tmp/new на новом сервере, затем vimdiff два файла, чтобы увидеть, что изменилось.

Некоторые предложения:

  • разреженные файлы (используйте -S)
  • жесткие ссылки (используйте -H)
  • /proc а также /sys (используйте --exclude или, лучше, -x и сделайте резервную копию каждой файловой системы отдельно)

Я склонен использовать rsync -axHSW --numeric-ids в аналогичных обстоятельствах.

Другие вопросы по тегам