rsync: --no-all-file не работает, если в конец файла добавлена ​​строка

Проблема заключалась в том, что lsof в этом скрипте выполнялся как пользователь nagios.

Было необходимо добавить следующую строку в / etc / sudoers (или, необязательно, в новый файл в /etc/sudoers.d/):

nagios  ALL=(root) NOPASSWD: /usr/bin/lsof

Кроме того, необходимо было изменить строку 15 сценария, чтобы она содержала следующее:

    proc1_lsof = "sudo lsof -p " + ','.join(map(str,proc1_children)) + " | grep -P .*\/[0-9]+\.yaml"

Плагин работает после внесения этих изменений.

1
20.05.2018, 13:37
2 ответа

No transfirió todo el archivo:

sent 131171 bytes  received 229418 bytes  48078.53 bytes/sec
total size is 1073741828  speedup is 2977.74

La salida detallada muestra que solo una parte del archivo se transfirió alguna vez en la segunda llamada a rsync.

rsyncinicia un subproceso -para el remitente y otro para el receptor, y estos envían sumas de verificación y datos entre ellos.

rsyncsumas de comprobación bloques del archivo. De forma predeterminada, el tamaño del bloque depende del tamaño del archivo. Si la suma de verificación de un bloque no coincide entre el remitente y el receptor, se transfiere el bloque completo. El último bloque se modificó agregando una cadena, por lo que tuvo que transferirse. Esta es la razón por la que ve que se transfieren 131171 bytes en lugar de solo la cantidad de bytes que realmente cambiaron en el archivo (, el tamaño del bloque es de alrededor de 130 KB para este archivo en particular ).

Ver también la opción -Ben el manual rsync.

3
27.01.2020, 23:18

No transfirió todo el archivo, pero tanto el origen como el destino se leyeron en su totalidad para determinar las diferencias.

Con --no-whole-fileintercambiaste un simple "reemplazar el archivo copiándolo en su totalidad" con un más complejo "lee la fuente y calcula sus sumas de verificación; lee el destino y calcula sus sumas de verificación; actualiza las diferencias".

En un sistema que tengo aquí, tomó más tiempo realizar la segunda operación que simplemente sobrescribir con el original. (Los tiempos tienen una variación de aproximadamente +/ -3 segundos en varios intentos.)

  • 29 segundos para copiar el original
  • 28 segundos para copiar el original actualizado con el predeterminado--whole-file
  • 59 segundos para comparar y copiar el original actualizado con--no-whole-file

Hay (buenos )motivos por los que rsynca veces no utiliza el algoritmo de transferencia delta.

2
27.01.2020, 23:18

Теги

Похожие вопросы