Je travaille avec des dossiers contenant beaucoup de fichiers, comme 100 000 voire 1 000 000 fichiers par dossier. Lorsque j'essaie de déplacer le contenu d'un dossier dans un autre, mon ordinateur est toujours bloqué. Même lorsque le processus semble terminé, je ne peux voir le contenu d'aucun dossier car nautilus semble complètement figé et je dois forcer mon ordinateur à redémarrer. J'ai remarqué que cela se produit également lorsque j'essaie de déplacer comme 10 000 fichiers.
Est-ce un problème de mon ordinateur ou est-ce normal lorsque vous travaillez avec ces numéros?
Une façon intelligente d'effectuer ce transfert de fichiers?
cp -R SRC/ DEST/
)gvfs-copy
(à partir dugvfs-bin
package) peut être plus rapide quecp
.Réponses:
Pensez peut-être à utiliser une méthode en ligne de commande pure pour transférer des fichiers de très grandes quantités, vous constaterez sans aucun doute que le processus est beaucoup plus rapide que l'utilisation d'un GUI.
Il existe de nombreuses façons d'accomplir cela, mais les éléments suivants ont fonctionné rapidement, en toute sécurité et efficacement sur mon système:
Quelques explications pour cette commande:
<destination>
dans mon exemple. Modifiez évidemment cela pour répondre à vos propres besoins et laissez de côté les crochets.Des permutations sans fin sont possibles mais cela devrait fonctionner bien et beaucoup plus efficacement que le GUI. Une permutation par exemple: si vous vouliez déplacer uniquement des fichiers pdf, vous pourriez exécuter:
L'utilisation de
xargs
ouvre de nombreuses possibilités notamment avec le déplacement d'un si grand nombre de fichiers. Beaucoup, beaucoup de possibilités ....Problèmes potentiels:
Il y a au moins 2 pièges potentiels à méditer, grâce aux commentateurs ci-dessous pour ces réflexions:
mv
, y déplacera toujours les fichiers! Faites attention ici ...-t
option (--target-directory
) est manquante et que le dossier de destination est en fait un fichier, vous déplacerez un fichier et échouerez sur les autres.mv
a 2 utilisations: renommer la source en destination ou déplacer la source en répertoire . Encore une fois soyez prudent ...la source
find . -maxdepth 1 -type f -exec mv -t test {} +
?-name...
pièce étrangère mais je l'ai laisséexargs
en place.-t
indicateur? Je pense que tous les fichiers seraient "déplacés" vers un seul fichier appelétest
, ce qui entraînerait la perte de tous vos fichiers sauf un.) Je pense que je préférerais unrsync
suivi par, si tout s'est bien passé, arm
. Cependant, je peux imaginer des scénarios où une telle vérification ne peut pas être automatisée.rsync
exemple écrit comme réponse?mv dir1/* dir2
, et n'y recourir qu'enfind -exec
cas de problème, ou si vous devez éviter de faire correspondre les dossiers avec votre glob. (Bien que cela dépende de vos conventions de dénomination, correspondra souvent*.*
à la plupart des fichiers mais pas à la plupart des répertoires, car il est courant d'avoir un.extension
fichier sur et de ne pas en avoir.
dans les noms de répertoire)J'ai eu une expérience similaire auparavant, c'est normal lorsqu'il s'agit d'un grand nombre de fichiers. J'avais une grande collection de fiches techniques PDF (pièces électroniques).
Les outils GUI vérifient certains détails du fichier et les métadonnées (icône / miniature, taille, ...), ce sera un gros problème dans ce cas. Même en mode Icône et sans vignettes, elles se figent car la plupart d'entre elles ne sont pas conçues pour des cas extrêmes. L'outil GUI essaie de charger les icônes de présentation pour tous les fichiers / dossiers du répertoire, même ces éléments ne sont pas visibles par l'utilisateur dans la partie d'écran actuelle. Le tri fait également partie du problème et aucun moyen de l'éviter.
locate
pour une recherche rapide au lieu defind
.Pour l'opération de déplacement, utilisez-le
mv
dans le terminal (les outils de l'interface graphique sont lents car ils essaient de mettre à jour la vue périodiquement).S'il se trouve dans la même partition, la commande ne modifiera que les pointeurs de l'index du système de fichiers. Sinon, ce sera une double opération (copier et supprimer). Ce sera cher.
Il n'y a qu'un seul cas, je peux vous aider, si vous copiez ces fichiers plusieurs fois et qu'ils ne sont pas mis à jour. Comme je l'ai fait lorsque je partage ma collection avec des amis, chaque fois que j'essaie de la copier, cela prend une décennie. (Ceci est plus utile uniquement avec des fichiers de petite taille)
la source
Si vous cherchez une solution qui vous offre les avantages des opérations en ligne de commande avec le sentiment et la flexibilité de l'interface graphique combinés, je recommande
mc
( commandant de minuit ).Il s'agit d'un gestionnaire de fichiers visuel basé sur ncurses - vous avez une vue à deux volets sur vos fichiers et un menu disponible. L'utilisation de la souris est possible, même sur ssh. Vous pouvez parcourir vos fichiers fs, inspecter les fichiers avec la visionneuse de fichiers, filtrer selon les critères à la volée et faire effectuer les opérations de copie ou de déplacement sur la ligne de commande.
C'est un clone du programme DOS Norton Commander qui était populaire au milieu des années 80. Cela fonctionne bien chaque fois que l'interface graphique commence à devenir peu fiable pour moi, et idéale pour votre objectif.
la source
J'ai rencontré des problèmes quelque peu similaires - je testais ma configuration RAID et lorsque je fais d'énormes transferts (par exemple, plus de 100 000 fichiers et 1-2 To de données en une seule fois), il semble que les transferts démarrent assez rapidement - disons ~ 200 Mo / s, puis ralentissez rapidement jusqu'à un plateau raisonnable ~ 90-120 Mo / sec (éventuellement après avoir consommé un peu de mémoire cache flash sur les disques). Ensuite, après 20-30 minutes, l'opération commence progressivement à descendre à un plateau beaucoup plus bas ~ 30-40 Mo / sec, pire quand il s'agit de petits fichiers - prenant une opération de 4 à 5 heures plus près de 15 heures.
J'ai passé un certain temps à essayer de diagnostiquer - par exemple, d'éventuels défauts de lecteur. En dépit d'essayer différents outils - ligne de commande, nautilus, je ne pouvais pas maintenir un débit décent pour les opérations de copie très volumineuses.
Ce qui a le mieux fonctionné pour moi, c'était d'utiliser Midnight Commander, et chaque fois que la copie devenait lente, je mettais en pause l'opération jusqu'à ce que le voyant du disque dur s'éteigne après que toutes les opérations en attente se soient éteintes - généralement une minute environ - puis une nouvelle pause MC et il reviendrait à un rythme décent pendant 20 à 30 minutes supplémentaires. Plutôt ennuyeux cependant.
la source