Что вы видите, что rsync не может? - PullRequest
1 голос
/ 11 марта 2009

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

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

Затем я сделал rsync -r / root@newserver:/old-server, и когда делал du в old-server dir, я получил 22 ГБ.

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

Ответы [ 4 ]

3 голосов
/ 11 марта 2009

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

0 голосов
/ 12 марта 2009

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

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

0 голосов
/ 11 марта 2009

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

0 голосов
/ 11 марта 2009

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

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

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

...