У меня есть файл объемом 500 ГБ, резервное копирование которого планируется удаленно. Файл часто меняется. Я перейду с рабочего стола на сервер. Оба могут запустить клиент или сервер rsync.
Какова правильная команда для этого? Те, которые я пробовал, софар принимал вечно или просто вел себя странно.
Пример и результаты:
rsync -cv --partial --inplace --no-whole-file /desktop/file1 myserver.com::module/file1
Кажется, работает, но только если я сделаю это дважды (?!). Кроме того, медленно.
Указанная выше команда выполняет контрольную сумму на обоих компьютерах или только на отправляющем? Правильно ли иначе?
Ответы:
Это никогда не будет быстрым, потому что rsync должен будет прочитать / проверить контрольную сумму всего файла, а чтение 500 ГБ займет много времени, если вы не храните его на SSD или чем-то еще.
Попробуй
rsync -vhz --partial --inplace <file/server stuff>
.-c
означает, что он проверяет суммы всего файла ПЕРЕД выполнением каких-либо передач, а не использует отметку времени, чтобы узнать, изменился ли он, что означает чтение всего файла дважды. Если временная метка не изменяется (она должна изменяться), вы можете простоtouch
файл до запуска rsync.Если это не в сценарии, вы можете добавить,
--progress
чтобы вы могли видеть, как он работает, как он работает.источник
--inplace
подразумевает--partial
Хотя это не 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, чтобы избежать проблем с разрешениями, или вам повезет.
FWIW, я первоначально узнал об этом здесь: http://www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/
источник
tar
лучше, чемrsync
когда у вас есть много маленьких файлов для передачи. Использованиеnc
также улучшает скорость передачи при быстром соединении, потому что у вас нет накладных расходов на SSH-шифрование (которое мне не нужно при одноранговом соединении)Чтобы избежать перегрузки сети, просто используйте протокол rsync, а не SSH. По умолчанию rsync использует SSH при указании URL-адреса, например имени хоста: / path. Вместо этого используйте rsync: // имя хоста / путь, чтобы использовать более быстрый протокол rsync. Трюки с tar / netcat не нужны. Алгоритм rsync должен быть намного быстрее.
Смотрите также https://gergap.wordpress.com/tag/rsync/ для получения дополнительной информации.
источник