Что вы можете увидеть, что 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
в аналогичных обстоятельствах.