J'ai besoin de trouver les fichiers les plus anciens avec leurs répertoires associés dans un système de fichiers de 90 To jusqu'à 50 To, puis de les déplacer vers un autre système de fichiers. Ils doivent conserver leur structure de répertoires car c'est ce qui identifie les fichiers. Donc -
premier niveau / deuxième niveau / troisième niveau / (fichier)
est la structure. J'ai besoin de déplacer toute cette structure - il n'y a rien dans les répertoires de niveau supérieur mais sans eux, je ne peux pas identifier à quoi appartient le fichier car tous les fichiers que je recherche ont le même nom. Une fois le processus terminé, il me reste environ 40 To dans le système de fichiers d'origine et presque rien dans le nouveau système de fichiers car les fichiers les plus anciens de l'original sont maintenant là.
Merci!
total_size > max { exit 0 }
au script awk)50 * 2^40
). Vous pouvez également le modifier à l'total_size += $2 + overhead
endroit oùoverhead
est défini la surcharge générée par ces dossiers. Voir aussi%k
au lieu de%s
pour obtenir l'utilisation du disque en Ko.La commande «ls» est quelque peu créative avec les horodatages - donc les analyser peut être pénible. Il serait probablement beaucoup plus facile d'implémenter cela dans un langage qui implémente stat (). Certaines versions d'Unix ont une statistique de ligne de commande - sur une boîte RH voisine:
Mais cela fonctionnera comme un chien avec un grand nombre de fichiers.
La documentation de GNU awk comprend un exemple d'extension fournissant des fonctions de système de fichiers, mais vous auriez besoin de faire un travail pour le construire et le maintenir.
Écrire un programme à partir de zéro en PHP, C ou Perl (ou go, ruby ou de nombreux autres langages) serait simple mais au-delà de la portée d'un article ici.
la source
stat
été ajouté longtemps après que GNUfind
ait eu une-printf
commande (qui peut faire la même chose que GNUstat
avec une bien meilleure interface).