15 votos

Herramienta o script para detectar mueve o cambia el nombre de archivos en Linux antes de una copia de seguridad

Básicamente estoy buscando para ver si existe una herramienta o script que puede detectar mueve o cambia el nombre de archivos por lo que puedo conseguir una lista de cambiado el nombre de/los archivos movidos y aplicar la misma operación en el otro extremo de la red para ahorrar en ancho de banda.

Básicamente, el almacenamiento en disco es barato, pero el ancho de banda no es, y el problema es que los archivos suelen ser reorganizado o se mueve en torno a una mejor estructura de directorios, por lo que al utilizar rsync para hacer la copia de seguridad rsync no notará que se trata de una renombrar o mover el archivo y re-transmisión a través de la red todo de nuevo a pesar de tener el mismo archivo en el otro extremo.

Así que me pregunto si existe una secuencia de comandos o una herramienta que puede grabar donde todos los archivos son y sus nombres, entonces, justo antes de una copia de seguridad, se podría volver a examinar y detectar movido o cambiado de nombre los archivos, entonces puedo tomar la lista y volver a aplicar el mover/cambiar el nombre de la operación en el otro lado.

Aquí está una lista de "general" características de los archivos:

  1. Gran inmutable archivos
  2. Pueden cambiar de nombre o mover alrededor de

[Modificar:] todas Estas son buenas respuestas, y lo que terminan haciendo en la final estaba mirando todas las respuestas y van a escribir algo de código para lidiar con esto. Básicamente lo que estoy pensando/trabajando ahora es:

  1. El uso de algo como AYUDANTE para el "inicial" scan y me permiten mantener las sumas de comprobación de los archivos debido a que se supone que nunca cambian, por lo que sería de ayuda en la detección de la corrupción.
  2. La creación de un inotify demonio que iba a controlar estos archivos/directorios y registrar todos los cambios relativos a renombrar y mover los archivos a un archivo de registro.
  3. Hay algunos casos de borde donde inotify puede fallar constancia de que algo pasó con el sistema de archivos, por lo tanto no es un final paso de usar la función buscar para buscar el archivo del sistema de archivos que tiene un tiempo de cambio de la última de la última copia de seguridad.

Esto tiene varias ventajas:

  1. Las sumas de comprobación/etc de un AYUDANTE para poder comprobar y asegurarse de que algunos medios de comunicación no conseguir corrupto
  2. Inotify mantiene el consumo de recursos bajos y no hay necesidad de volver a explorar el sistema de ficheros más y más
  3. No hay necesidad de parche rsync; Si tengo que arreglar las cosas que puedo, pero prefiero evitar la aplicación de parches cosas para mantener la carga más baja, (es decir, no se necesita re-parche cada vez que hay una actualización).
  4. He usado Unísono antes y su agradable, sin embargo, yo podría haber jurado que la Unison no guarda copias en todo el sistema de ficheros y que su "archivo" archivos puede llegar a ser bastante grande?

7voto

Mark Wagner Puntos 11107

Unison http://www.cis.upenn.edu/~bcpierce/unison/ afirma ser capaz de detectar mueve y cambia el nombre.

Hay un par de parches para rsync para agregar mover/cambiar el nombre de la detección:

http://gitweb.samba.org/?p=rsync-patches.git;a=blob;f=detect-renamed-lax.diff;h=1ff593c8f97a97e8970d43ff5a62dfad5abddd75;hb=master

http://gitweb.samba.org/?p=rsync-patches.git;a=blob;f=detect-renamed.diff;h=c3e6e846eab437e56e25e2c334e292996ee84345;hb=master

En la entrada de Bugzilla de seguimiento de este problema: https://bugzilla.samba.org/show_bug.cgi?id=2294

5voto

mreggen Puntos 2940

Esto es un poco de un extraño solución, pero... git detecta mueve y cambia el nombre basado en el contenido de los archivos, así que si usted fuera a mantener los directorios en cuestión bajo el control de versiones a continuación, git sería capaz de detectar los movimientos y tal, y evitar la transferencia de los contenidos (puesto que ya está en ambos lados del alambre) mientras sigue moviendo las cosas en el árbol.

Sólo un pensamiento.

5voto

groovehunter Puntos 238

sugerencias interesantes aquí. También la idea de usar el sistema de ficheros capacidades ie ZFS. Resultó extraño que no hay ninguna herramienta que hace que la cosa simple. Unison opción no funciona en la mayoría de los casos como el informe de la gente, no para mí.

Quiero que la característica de tener una copia de seguridad de mi colección de películas en un segundo disco duro en la sincronización cuando se rearraring carpetas.

Ahora he encontrado esta sencilla secuencia de comandos de C http://sourceforge.net/projects/movesync/

Parece que funciona bien. Ejecutar y, a continuación, sincronizar con normalidad con el ie unísono.

4voto

Warner Puntos 17528

Usted puede ser capaz de utilizar un IDS basado en host como AYUDANTE y escribir un guión envoltorio de usar su salida. Es probable que tenga que escribir una lógica más compleja teniendo en cuenta las sumas de comprobación.

De lo contrario, una red basada en el sistema de ficheros podría tener sentido, ya que los cambios se reflejarán en todos los lugares. Sin embargo, sospecho que va a transferir a través de Internet, lo que limitará las opciones aquí.

3voto

mreggen Puntos 2940

Usted puede tratar de unison ; especialmente el

-xferbycopying optimizar las transferencias el uso de copias locales (por defecto verdadero)

la opción mencionada en el docs como

Cuando esta preferencia está establecido, Unison se trate de evitar la transferencia de archivos contenidos a través de la red reconocer cuando un archivo con el se requiere contenido que ya existe en la réplica de destino. Esto generalmente permite que el archivo se mueve a propagarse muy rápidamente. El valor predeterminado es verdadero.

parece que puede hacer lo que quiera.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: