Je prévois donc une sauvegarde, il y a des milliers de fichiers dans les sous-répertoires et je sais que les plus gros ne sont que des ensembles de données que je n'ai pas besoin de sauvegarder, par opposition à des éléments que j'ai créés.

J'ai trouvé cette commande utile ici qui répertorie tout ce qui est plus grand ou plus petit que une taille donnée:

Si je fais:

find . -type f -size +1000M

Il ne répertorie que 4 fichiers, mais pour + 100M, il y en a environ 30. Je peux regarder à travers et voir s'il y a quelque chose d'important qui doit rester et ajuster le seuil en conséquence.

Voudrait une taille totale pour que je sache si tout ira sur un disque optique de 25 ou 100 Mo ..

J'ai donc essayé de le diriger vers du comme ceci mais cela ne semble pas fonctionner, c'est-à-dire donnez-moi un nombre total de, disons les 4 fichiers trouvés:

find . -type f -size +1000M | du

Est ce que quelqu'un sait comment accomplir cela?

(Oui, bien sûr changera le + en un -, moins qu'autrement supérieur qu'avant de regarder le nombre mais il est plus facile de voir si cela fonctionne en regardant 30 plutôt que des milliers de fichiers).

0
cardamom 26 avril 2017 à 17:21

3 réponses

Meilleure réponse

Vous pouvez exécuter find avec -printf, qui dispose de nombreuses options pour contrôler ce qu'il imprime (documenté ici). Ainsi, vous pouvez imprimer chaque fichier, suivi du nombre de blocs de disque de 1 kilo-octet qu'il utilise, avec:

find . -type f -size +1000M -printf '%p %k\n'

Une fois que vous avez fait cela, il est plus facile de les additionner avec awk qu'avec du:

find . -type f -size +1000M -printf '%p %k\n'  | awk 'BEGIN{total=0}{total += $2}END{print total}'

C'est parce que du n'accepte une liste d'entrée que si elle se termine par NUL (ASCII 0). Il faudrait donc faire:

find . -type f -size +1000M -printf '%p\0' | du -k --files0-from=- --total

Puis regardez la dernière ligne "total". Mais la NUL - liste de noms de fichiers terminée n'est pas conviviale à regarder; sans noms d'utilisateur, les noms de fichiers semblent fonctionner ensemble.

1
MassPikeMike 26 avril 2017 à 14:44
 du --total $(find . -type f -size +1000M)  

Va vous aider.

1
Kent 26 avril 2017 à 14:44

Afin de savoir si certains fichiers tiennent sur un autre support, vous devez prendre en compte la taille de bloc de l'autre support. Il ne suffit pas de résumer uniquement les octets de chaque fichier, car chaque fichier gaspille de l'espace disque dans le dernier bloc. La quantité d'espace gaspillé dépend de la taille du bloc.

Exemple de mon répertoire personnel sur ma machine virtuelle:

$ du -hs .
619M    .
$ du -bhs .
598M    .

Les fichiers ont une taille de 598 Mo, mais ils utilisent 619 Mo sur le disque. Environ 20 millions sont gaspillés.

1
ceving 26 avril 2017 à 15:11