Эта статья имеет несколько полезных предложений по rsync
крайней мере:
Проблемы
Использование rsync --sparse works
, но вызывает огромное количество ненужных записей на диск. Изменение 10 байтов на длину 50 ГБ (используется 1 ГБ) должно привести к записи только одного или двух блоков, что приводит к записи 1 ГБ. Это медленно и, возможно, не очень хорошо для долговечности дисков.
Использование rsync --inplace
работает, но создает не разреженные файлы.
Вы не можете использовать --sparse и --inplace одновременно :-( это не разрешено rsync. Rsync: --sparse нельзя использовать с --inplace
Решение
Если вы используете --inplace для обновления ранее существующего разреженного файла, файл останется разреженным и будет содержать только небольшое количество записанных блоков. Только когда rsync --inplace создает файл, он делает его не разреженным.
Таким образом, решение заключается в создании соответствующего, правильного, пустого, разреженного файла на целевой машине для каждого файла на исходной машине - если файл еще не присутствует на целевой машине.
Тогда rsync --inplace будет работать так, как задумано, оставляя разреженные файлы разреженными, и записывая только измененные блоки на диск.
Итак, если я правильно прочитал, вы хотите сначала создать пустой разреженный файл на цели. Вы можете сделать это с
truncate -s 3G filename
Затем вы можете использовать rsync --inplace
для копирования файлов. Это должно быть необходимо только один раз.
В той же статье предлагается использовать Virtsync, который
коммерческий инструмент командной строки Linux стоимостью $ 49 для синхронизации содержимого огромных файлов (таких как образы дисков виртуальных машин и базы данных).
Это может быть лучшим решением, если вы готовы заплатить за него, поскольку оно написано специально для такого типа ситуаций.