Вы отметили пост с rsync. Почему бы вам просто не загрузить весь файл и не использовать его rsyncдля периодического обновления с сервера? (Файлы журналов также хорошо сжимаются, поэтому rsync -zвам нужно всего лишь загрузить 4-5 МБ для всего файла журнала .)
grawity
Ответы:
18
Сначала получите размер удаленного файла в байтах:
$ ssh user@host 'stat -c%s FILENAME'
50000
Подсчитайте 10% от этого числа и скопируйте последние десять процентов:
Отлично. :) Есть ли stat -c%sкакое-то преимущество перед du -b?
13
2
Я думаю, что можно даже объединить эти команды, чтобы уменьшить читабельность и сохранить одно соединение SSH:ssh user@host 'f=FILENAME; tail -c $(($(stat -c%s $f)/10)) $f' > DESTINATION
n.st
2
@ n.st: оба они в конечном итоге используют один и тот же stat()системный вызов, что очень быстро, хотя duтакже проверяет все подключенные файловые системы, используемые stat()перед фактическим файлом. Но это не разница на практике. ⫽ Однако, если вам нужно получить только байты (как в однострочнике в вашем последнем комментарии), тогда запуск statбудет проще, потому что он не выведет ненужное имя файла, что сделает однострочник короче, чем это было бы с du -b | sed ....
rsync
. Почему бы вам просто не загрузить весь файл и не использовать егоrsync
для периодического обновления с сервера? (Файлы журналов также хорошо сжимаются, поэтомуrsync -z
вам нужно всего лишь загрузить 4-5 МБ для всего файла журнала .)Ответы:
Сначала получите размер удаленного файла в байтах:
Подсчитайте 10% от этого числа и скопируйте последние десять процентов:
источник
stat -c%s
какое-то преимущество передdu -b
?ssh user@host 'f=FILENAME; tail -c $(($(stat -c%s $f)/10)) $f' > DESTINATION
stat()
системный вызов, что очень быстро, хотяdu
также проверяет все подключенные файловые системы, используемыеstat()
перед фактическим файлом. Но это не разница на практике. ⫽ Однако, если вам нужно получить только байты (как в однострочнике в вашем последнем комментарии), тогда запускstat
будет проще, потому что он не выведет ненужное имя файла, что сделает однострочник короче, чем это было бы сdu -b | sed ...
.