12

У меня есть файл объемом 500 ГБ, который я планирую удаленно копировать. Файл часто меняется. Я буду пересылать его с рабочего стола на сервер. Оба могут запустить клиент или сервер rsync.

Какова правильная команда для этого? Те, которые я пробовал, софар принимал вечно или просто вел себя странно.

Пример и результаты:

rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1 

Кажется, работает, но только если я сделаю это дважды (?!). Кроме того, медленно.

Указанная команда выполняет контрольную сумму на обоих компьютерах или только на отправляющем? Правильно ли иначе?

2 ответа2

11

Это никогда не будет быстрым, потому что rsync должен будет прочитать / проверить контрольную сумму всего файла, а чтение 500 ГБ займет много времени, если вы не храните его на SSD или чем-то еще.

Попробуйте rsync -vhz --partial --inplace <file/server stuff> .

-c означает, что он проверяет суммы всего файла ПЕРЕД выполнением каких-либо передач, а не использует отметку времени, чтобы увидеть, изменилась ли она, что означает чтение всего файла дважды. Если временная метка не изменяется (она должна изменяться), вы можете просто touch к файлу перед запуском rsync.

Если это не написано в сценарии, вы можете добавить --progress чтобы увидеть, как он работает во время работы.

2

Хотя это не rsync, в зависимости от того, что вы пытаетесь сделать, это может работать лучше. Я делал похожую задачу резервного копирования, и это было определенно быстрее.

Используйте netcat, чтобы создать tar-трубу с одного компьютера на другой.

На вашем исходном компьютере:

tar -cpv --atime-preserve=system . | nc -q 10 -l -p 45454

Вы создаете архив, сохраняющий разрешения и время, а затем отправляете его в netcat через порт 45454.

На вашем резервном компьютере

nc -w 10 X.X.X.X 45454 | tar -xpv

X.X.X.X = локальный IP-адрес вашего исходного компьютера.

Для меня это сработало хорошо. Он работал со скоростью 25-30 МБ / с по проводной локальной сети, в отличие от 2-3 МБ / с с rsync. Недостаток: он не синхронизируется, он просто копирует то, что находится у вас на источнике. Для такой резервной копии, как вы описываете, - один файл объемом 500 ГБ - он может работать очень хорошо.

Возможно, вам придется сделать это как root, чтобы избежать проблем с разрешениями, или вам повезет.

Впервые я узнал об этом здесь: http://www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .