Necesito encontrar los archivos más antiguos con sus directorios asociados en un sistema de archivos de 90 TB hasta 50 TB y luego moverlos a otro sistema de archivos. Tienen que conservar su estructura de directorios, ya que eso es lo que identifica los archivos. Entonces -
primer nivel / segundo nivel / tercer nivel / (archivo)
Es la estructura. Necesito mover toda esa estructura; no hay nada en los directorios de nivel superior, pero sin ellos no puedo identificar a qué pertenece el archivo, ya que todos los archivos que estoy buscando tienen el mismo nombre. Cuando se complete el proceso, debería tener aproximadamente 40 TB en el sistema de archivos original y casi nada en el nuevo sistema de archivos, ya que los archivos más antiguos en el original ahora están allí.
¡Gracias!
total_size > max { exit 0 }
al script awk)50 * 2^40
). También puede cambiarlo atotal_size += $2 + overhead
dondeoverhead
se define como la sobrecarga incurrida por esas carpetas. Consulte también en%k
lugar de%s
obtener el uso del disco en KiB.El comando 'ls' es algo creativo con marcas de tiempo, por lo que analizarlas puede ser una molestia. Probablemente sería mucho más fácil implementar esto en un lenguaje que implemente stat (). Algunas versiones de Unix tienen una estadística de línea de comando , en un cuadro RH cercano:
Pero esto se ejecutará como un perro con una gran cantidad de archivos.
La documentación para GNU awk incluye una extensión de ejemplo que proporciona funciones del sistema de archivos, pero necesitaría hacer un trabajo para construir y mantener esto.
Escribir un programa desde cero en PHP, C o Perl (o go, ruby u muchos otros lenguajes) sería sencillo pero más allá del alcance de una publicación aquí.
fuente
stat
se agregó mucho después de que GNUfind
tuviera un-printf
comando (que puede hacer lo mismo que GNUstat
con una interfaz mucho mejor).