backup - respaldos - rsync: ¿qué significa f+++++++++ en los registros de rsync?
rsync linux ejemplos (4)
1) Wodin, eso no es del todo cierto. Si usa --partial o -P tag (igual que --partial --progress) rsync reanuda las transferencias interrumpidas.
2) Exactamente, ese es el resultado común para la etiqueta --itemize-changes.
Estoy haciendo un rsync para hacer una copia de seguridad de mis archivos de servidor, y tengo dos preguntas:
1 - En el medio del proceso necesito detener y comenzar de nuevo la sincronización, me gustaría saber si la rsync comenzará en el mismo punto donde se detuvo o reiniciará la sincronización.
2 - En los archivos de registro aparecen esta cadena a todos los archivos "f +++++++++", me gustaría saber lo que significa?
p.ej:
010/12/21 08:28:37 [4537] >f.st...... iddd/logs/website-production-access_log
2010/12/21 08:29:11 [4537] >f.st...... iddd/web/website/production/shared/log/production.log
2010/12/21 08:29:14 [4537] .d..t...... iddd/web/website/production/shared/sessions/
2010/12/21 08:29:14 [4537] >f+++++++++ iddd/web/website/production/shared/sessions/ruby_sess.017a771cc19b18cd
2010/12/21 08:29:14 [4537] >f+++++++++ iddd/web/website/production/shared/sessions/ruby_sess.01eade9d317ca79a
Gracias.
1.) "Reiniciará la sincronización", pero no transferirá los archivos que tengan el mismo tamaño e indicación de tiempo, etc. Primero crea una lista de archivos para transferir y durante esta etapa verá que ya ha transferido algunos archivos y se saltearán. Debes decirle a rsync que preserve las marcas de tiempo, etc. (por ejemplo, usando rsync -a ...
)
Mientras rsync está transfiriendo un archivo, lo llamará algo así como .filename.XYZABC
lugar de filename
de filename
. Luego, cuando haya terminado de transferir ese archivo, lo cambiará de nombre. Entonces, si mata rsync mientras está transfiriendo un archivo grande, tendrá que usar la opción --partial para continuar la transferencia en lugar de comenzar desde cero.
2.) No sé qué es eso. ¿Puedes pegar algunos ejemplos?
EDITAR: Según http://ubuntuforums.org/showthread.php?t=1342171 esos códigos se definen en la página del manual rsync en la sección para la opción -i, --itemize-changes
.
Parte arreglada si mi respuesta basada en Joao
Echemos un vistazo a cómo rsync funciona y comprenda mejor las líneas de resultados crípticas:
1 - Una gran ventaja de rsync es que después de una interrupción la próxima vez continúa sin problemas.
La siguiente invocación de rsync no volverá a transferir los archivos, que ya se han transferido, si no se han modificado mientras tanto. Pero comenzará a verificar todos los archivos desde el principio para averiguarlo, ya que no tiene conocimiento de que se haya interrumpido.
2 - Cada carácter es un código que se puede traducir si lee la sección para -i, --itemize-changes
en man rsync
Decodificación de su archivo de registro de ejemplo de la pregunta:
> f.st ......
> - the item is received
f - it is a regular file
s - the file size is different
t - the time stamp is different
.d..t ......
. - the item is not being updated (though it might have attributes
that are being modified)
d - it is a directory
t - the time stamp is different
> f +++++++++
> - the item is received
f - a regular file
+++++++++ - this is a newly created item
La parte relevante de la página man de rsync:
-i, --itemize-changes
Solicita una lista detallada simple de los cambios que se realizan en cada archivo, incluidos los cambios de atributos. Esto es exactamente lo mismo que especificar --out-format = ''% i% n% L''. Si repite la opción, también se mostrarán los archivos sin modificar, pero solo si el receptor rsync es al menos la versión 2.6.7 (puede usar -vv con versiones anteriores de rsync, pero eso también activa el resultado de otros mensajes detallados). sabios).
El escape "% i" tiene una salida críptica de 11 letras de largo. El formato general es como la cadena YXcstpoguax, donde Y se reemplaza por el tipo de actualización que se realiza, X se reemplaza por el tipo de archivo y las otras letras representan atributos que se pueden generar si se están modificando.
Los tipos de actualización que reemplazan la Y son los siguientes:
- A
<
significa que un archivo se está transfiriendo al host remoto (enviado). - A
>
significa que un archivo se está transfiriendo al host local (recibido). - A
c
significa que se está produciendo un cambio / creación local para el elemento (como la creación de un directorio o el cambio de un enlace simbólico, etc.). - Una
h
significa que el elemento es un enlace rígido a otro elemento (requiere -direcciones duras). - A significa que el artículo no se está actualizando (aunque podría tener atributos que se están modificando).
- A
*
significa que el resto del área de salida detallada contiene un mensaje (por ejemplo, "eliminación").
Los tipos de archivo que reemplazan la X son: f
para un archivo, un d
para un directorio, una L
para un enlace simbólico, una D
para un dispositivo y una S
para un archivo especial (por ejemplo, sockets y fifos con nombre).
Las otras letras en la cadena de arriba son las letras reales que se mostrarán si se actualiza el atributo asociado para el elemento o un "." para ningún cambio Tres excepciones a esto son: (1) un elemento recién creado reemplaza cada letra con un "+", (2) un elemento idéntico reemplaza los puntos con espacios, y (3) un atributo desconocido reemplaza cada letra con un "?" (Esto puede suceder al hablar con una rsync anterior).
El atributo que está asociado con cada letra es el siguiente:
- Una
c
significa que un archivo normal tiene una suma de comprobación diferente (requiere --checksum) o que un enlace simbólico, dispositivo o archivo especial tiene un valor cambiado. Tenga en cuenta que si envía archivos a una rsync anterior a 3.0.1, este indicador de cambio estará presente solo para los archivos regulares que difieren en la suma de comprobación. - A
s
significa que el tamaño de un archivo normal es diferente y se actualizará con la transferencia de archivos. - A
t
significa que el tiempo de modificación es diferente y se está actualizando al valor del emisor (requiere --tiempo). Un valor alternativo de T significa que el tiempo de modificación se establecerá en el tiempo de transferencia, que ocurre cuando un archivo / enlace simbólico / dispositivo se actualiza sin --times y cuando se cambia un enlace simbólico y el receptor no puede establecer su hora. (Nota: cuando se utiliza un cliente rsync 3.0.0, es posible que vea el indicador s combinado con t en lugar del indicador T adecuado para este error de configuración de tiempo). - A
p
significa que los permisos son diferentes y se actualizan al valor del remitente (requiere --perms). - Una
o
significa que el propietario es diferente y se está actualizando al valor del remitente (requiere privilegios de propietario y superusuario). - A
g
significa que el grupo es diferente y se está actualizando al valor del remitente (se requiere --grupo y la autoridad para establecer el grupo). - La ranura
u
está reservada para uso futuro. - El
a
significa que la información de ACL cambió. - La
x
significa que la información del atributo ampliado ha cambiado.
Otra salida posible: al eliminar archivos, el "% i" generará la cadena "* deleteting" para cada elemento que se está eliminando (suponiendo que está hablando con una rsync lo suficientemente reciente como para registrar las eliminaciones en lugar de mostrarlas como un mensaje detallado).
Hace un tiempo, necesitaba entender la salida de rsync
para un script que estaba escribiendo. Durante el proceso de escribir esa secuencia de comandos busqué en Google y llegué a lo que @mit había escrito above . Utilicé esa información, así como la documentación de otras fuentes, para crear mi propio manual sobre los indicadores de bits y cómo obtener rsync
para mostrar indicadores de bits para todas las acciones (no lo hace de manera predeterminada).
Estoy publicando esa información aquí con la esperanza de que ayude a otros que (como yo) se encuentran en esta página a través de la búsqueda y necesitan una mejor explicación de rsync
.
Con la combinación del --itemize-changes
y el -vvv
, rsync
nos proporciona un resultado detallado de todos los cambios del sistema de archivos que se identificaron en el directorio de origen en comparación con el directorio de destino. Los indicadores de bits producidos por rsync
pueden decodificarse para determinar qué cambió. Para decodificar el significado de cada bit, use la siguiente tabla.
Explicación de cada posición de bit y valor en la salida de rsync
:
YXcstpoguax path/to/file
|||||||||||
||||||||||╰- x: The extended attribute information changed
|||||||||╰-- a: The ACL information changed
||||||||╰--- u: The u slot is reserved for future use
|||||||╰---- g: Group is different
||||||╰----- o: Owner is different
|||||╰------ p: Permission are different
||||╰------- t: Modification time is different
|||╰-------- s: Size is different
||╰--------- c: Different checksum (for regular files), or
|| changed value (for symlinks, devices, and special files)
|╰---------- the file type:
| f: for a file,
| d: for a directory,
| L: for a symlink,
| D: for a device,
| S: for a special file (e.g. named sockets and fifos)
╰----------- the type of update being done::
<: file is being transferred to the remote host (sent)
>: file is being transferred to the local host (received)
c: local change/creation for the item, such as:
- the creation of a directory
- the changing of a symlink,
- etc.
h: the item is a hard link to another item (requires
--hard-links).
.: the item is not being updated (though it might have
attributes that are being modified)
*: means that the rest of the itemized-output area contains
a message (e.g. "deleting")
Algunos ejemplos de salida de rsync para varios escenarios:
>f+++++++++ some/dir/new-file.txt
.f....og..x some/dir/existing-file-with-changed-owner-and-group.txt
.f........x some/dir/existing-file-with-changed-unnamed-attribute.txt
>f...p....x some/dir/existing-file-with-changed-permissions.txt
>f..t..g..x some/dir/existing-file-with-changed-time-and-group.txt
>f.s......x some/dir/existing-file-with-changed-size.txt
>f.st.....x some/dir/existing-file-with-changed-size-and-time-stamp.txt
cd+++++++++ some/dir/new-directory/
.d....og... some/dir/existing-directory-with-changed-owner-and-group/
.d..t...... some/dir/existing-directory-with-different-time-stamp/
Captura de salida de rsync
(centrado en los indicadores de bit):
En mi experimentación, tanto el --itemize-changes
como el indicador -vvv
son necesarios para que rsync
-vvv
una entrada para todos los cambios en el sistema de archivos. Sin el -vvv
triple verbose ( -vvv
), no veía los cambios de directorios, enlaces y dispositivos enumerados. Vale la pena experimentar con tu versión de rsync para asegurarte de que está observando y anotando todo lo que esperabas.
Un uso útil de esta técnica es agregar el --dry-run
al comando y recopilar la lista de cambios, según lo determinado por rsync, en una variable (sin hacer ningún cambio) para que pueda hacer algún procesamiento en la lista usted mismo. Algo como lo siguiente capturaría el resultado en una variable:
file_system_changes=$(rsync --archive --acls --xattrs /
--checksum --dry-run /
--itemize-changes -vvv /
"/some/source-path/" /
"/some/destination-path/" /
| grep -E ''^(/.|>|<|c|h|/*).......... .'')
En el ejemplo anterior, la salida (estándar) de rsync
se redirige a grep
(a través de stdin) para que podamos aislar solo las líneas que contienen indicadores de bits.
Procesando la salida capturada:
El contenido de la variable puede registrarse para su uso posterior o repetirse de inmediato para los elementos de interés. Utilizo esta táctica exacta en el guión que escribí durante la investigación sobre rsync
. Puede consultar el script ( https://github.com/jmmitchell/movestough ) para ver ejemplos de procesamiento posterior de la salida capturada para aislar nuevos archivos, archivos duplicados (mismo nombre, mismos contenidos), colisiones de archivos (mismo nombre, diferente contenidos), así como los cambios en las estructuras de los subdirectorios.