Итак, у меня есть компьютер с Windows, который постоянно собирает данные для физического эксперимента. Данные сохраняются в текстовом файле, для которого каждое новое событие добавляется в новой строке.
Каждый раз, когда мне нужно повторно проанализировать данные, которые я передаю в sbu, файл переносится на компьютер с Ubuntu, вначале это нормально, но когда файл переходит в 1 ГБ, он начинает действительно занимать много времени для передачи файла дыры снова и снова, когда отличаются только последние строки.
Чтобы дать вам представление о том, что эксперименты продолжаются около 3 часов, передача занимает ~ 5 минут на ГБ, файлы обычно имеют максимум 3 ГБ, а файлы имеют номер строки порядка десятков миллионов.
Если у вас есть решение, которое работает только для переноса из Linux в Linux, я также заинтересован, может быть, я смогу попробовать его с Cygwin.
rsync
- это то, что вам нужно, и оно должно быть доступно для Windows.
rsync известен своим алгоритмом дельта-передачи, который уменьшает объем данных, передаваемых по сети, отправляя только разницу между исходными файлами и существующими файлами в месте назначения. (взято из man rsync
).
Установите rsync в своей системе Windows, затем из системы Linux выполните:
rsync --progress ip.of.windows.server:/path/to/file ./
Он перенесет только те части, которые были изменены. Если файл эволюционирует, как вы говорите, то каждая передача будет очень маленькой и быстрой.
Обратите внимание, что rsync подключается с использованием ssh, поэтому, если ssh уже настроен и работает, rsync также должен работать нормально.
Если только несколько последних строк файла изменяются каждый раз, передача всего файла снова и снова не является лучшим решением.
Существуют инструменты, которые вычисляют различия в файле и копируют только новые биты, например, rsync
(с использованием дельта-кодирования, дополнительную информацию здесь: http://en.wikipedia.org/wiki / Rsync )