2015-06-04 4 views
0

Я ищу оптимальный способ, который мы можем использовать для переноса больших файлов журнала с локального пути на путь NFS.Лучший способ переноса файла из локального пути в путь NFS

Здесь файлы журнала будут продолжать динамически меняться со временем.

В настоящее время я использую утилиту java, которая будет считывать файл с локального пути и переносит его на NFS-путь. Но это, похоже, требует времени.

Мы не можем использовать команды копирования, так как файл журнала присоединяется к более новым журналам. Так что это не сработает.

То, что я ищу, есть .. Есть ли способ, кроме использования утилиты java, которая будет передавать детали файла журнала из локального пути в путь NFS.

Спасибо заранее!

+0

мутноватый, что вы просите. Если вы ограничены скоростью сети, вы можете попытаться использовать быстрое сжатие/декомпрессию. Если нет, то какая проблема с обычным 'cp'? – keltar

+0

@keltar plz найти обновленный запрос .. дайте мне знать, если его еще не ясно. –

ответ

0

Если ваша скорость сети выше, чем скорость роста журнала, вы можете просто cp src dst.

Если журнал растет слишком быстро, и вы не можете нажать, что много данных, но вы только хотите принять текущий снимок, я вижу три варианта:

  1. Как вы теперь прочитать весь файл в память, как и сейчас, а затем скопируйте его в пункт назначения. При больших файлах журнала это может привести к очень большому объему памяти. Требуется специальная утилита или tmpfs.
  2. Сделайте локальную копию файла, затем переместите копию в пункт назначения. Совершенно очевидно. Требуется, чтобы у вас было достаточно свободного места и было увеличено давление на устройстве хранения. Если временный файл находится в tmpfs, это точно так же, как и первый метод, но не требует специальных инструментов (по-прежнему требуется память и достаточно большие tmpfs).
  3. Сделайте текущий размер файла и скопируйте только этот объем данных, игнорируя все, что будет добавлено при копировании.

т.д .:

dd if=src.file of=/remote/dst.file bs=1 count=`stat -c '%s' src.file` 

stat принимает текущий размер файла, а затем этот dd проинструктирован скопировать только то, что количество байтов.

Из-за низкой bs, для лучшей производительности вы можете объединить его с другим dd:

dd status=none bs=1 count=`stat -c '%s' src.file` | dd bs=1M of=/remote/dst.file 
+0

Спасибо .. попробует предложение. –