Мне нужно скопировать несколько ТБ данных с одного внешнего диска на другой (в основном файлы размером ~ 400 МБ). Источник - USB2 в формате NTFS, и лучшая скорость чтения, которую я могу получить, составляет 7 МБ / с. Целью является HFS + USB3, и скорость записи значительно выше этой.
Файловая система NTFS не в порядке, и только NTFS-3g (медленная, пользовательское пространство) может читать все файлы в ней, даже Windows не может этого сделать, или я бы использовал это.
я использую rsync -va /Volumes/source /Volumes/target
выполнить копию.
Есть ли способ в rsync или OS X кэшировать записи, чтобы целевому объекту не приходилось постоянно писать на медленной скорости в течение нескольких дней? Что-то вроде заполнения 1 ГБ или 2 ГБ или даже 4 ГБ ОЗУ перед записью? Таким образом, целевой диск потратит несколько дней на выполнение
write - rest - rest - rest - rest - rest
write - rest - rest - rest - rest - rest
write - rest - rest - rest - rest - rest
...
вместо того, чтобы тратить все эти дни непрерывно на медленную запись.
Другая возможностьучитывая, что большинство файлов большие, rsync будет записывать любой заданный файл только после того, как закончит его чтение, но я тоже не нашел способа сделать это.
Или лучше просто все время непрерывно писать на медленной скорости?
Я нашел своего рода ответ: используйте ramdisk в качестве временного каталога для rsync, например
rsync -va -T /Volumes/ramdisk /Volumes/source /Volumes/target
Убедитесь, что временный каталог действительно существует, потому что в противном случае rsync не создаст его, а просто прочитает как в /dev/null
, afaict (возможно, он просто установит использование свободной оперативной памяти в качестве временного пространства, что было бы здорово, но я сомневаюсь в этом, а у меня слишком много оперативной памяти, чтобы попробовать это).
Это сначала прочитает каждый файл полностью на ramdisk, а затем запишет его в цель за один раз. Поскольку файлы большие, конечный результат более или менее соответствует моим задумкам. Это не идеально, потому что rsync перестает читать источник, пока цель не закончила запись, но в этом случае это означает, что источник не будет поддерживать непрерывную активность в течение всей передачи, что меня устраивает. Нет общего замедления, потому что чтение на ramdisk немного быстрее, чем чтение / запись в целевой.
Во-первых, вы столкнетесь с вечно долгим и сложным процессом чтения из NTFS без хорошей конфигурации драйвера.
Пытаться http://www.macupdate.com/app/mac/26288/ntfs
Тем не менее, у вас, скорее всего, возникнут проблемы с исходным диском, если вы работаете так медленно.
Нет хорошего способа изменить процесс кеширования на официальном rsync
вы можете обнаружить, что в этой ситуации cp -rvn является более быстрым вариантом.