Registros simples de transferencia de archivos

2

Esta puede ser una pregunta general de Unix en lugar de una pregunta de OS X.

Quiero registrar las transferencias de archivos generales en OS X, ya sea desde y hacia el mismo sistema o hacia otro sistema, pero para mantenerlo simple, suponga que todo esto es interno a una computadora y sistema de archivos.

Simplemente quiero poder ejecutar el comando mv varias veces, luego retroceder a través de un archivo de registro y ver qué se movió y dónde se movió posteriormente. La advertencia es que también quiero registrar las transferencias de archivos iniciadas en la GUI al arrastrar carpetas y archivos al mismo archivo de registro.

(Si fuera un directorio, también mostraría el contenido de lo que se movió en ese directorio).

Un ejemplo podría ser estos archivos creados y movidos en el terminal y en la GUI

     1pm: $ vi testfile1.txt
     2pm: $ mv testfile1.txt MyMovedFile.txt
     2:30pm – GUI file moved  ~/myTestFile.txt ~/Documents/myTestFile.txt
     3pm: $ mv MyMovedFile.txt MyNewFile.txt

El registro mostraría el historial para mí:

     2pm: testfile1.txt MyMovedFile.txt
     2:30pm ~/myTestFile.txt ~/Documents/myTestFile.txt
     3pm: MyMovedFile.txt MyNewFile.txt

Si fue realmente elegante, también puede mostrarme el código de retorno de la transferencia de archivos.

    
pregunta DogEatDog 04.04.2012 - 17:09

1 respuesta

1

Echa un vistazo a iosnoop o posiblemente a fs_usage . Aunque lo que quiere no es fácil de lograr sin un gran filtrado, porque las "transferencias de archivos" pueden ser muchas cosas diferentes a nivel de syscall:

  • mv en el mismo punto de montaje moverá un archivo
  • mv en los puntos de montaje creará un nuevo archivo en el destino y desvinculará el original
  • Otras herramientas harán cosas aún más complejas, por ejemplo, si está descargando un archivo con un navegador, creará un archivo vacío y luego lo agregará con el tiempo.

Ambas herramientas anteriores se basan en DTrace , que es un marco de seguimiento muy potente y que probablemente se pueda incluir en un script para filtrar hasta la mayor parte de lo que quieres, pero te llevará algo de trabajo. Hay scripts de ejemplo en /usr/bin/*.d (por ejemplo, /usr/bin/iofile.d ) y la documentación se puede encontrar en Oracle (OS X DTrace es un puerto de la versión original de Solaris).

    
respondido por el Ingmar Hupp 16.04.2012 - 16:09

Lea otras preguntas en las etiquetas