rsync serait un mauvais choix car il fait beaucoup de travail en arrière-plan client/serveur qui tient compte des systèmes locaux et distants.
mv est probablement le meilleur choix. Si possible, vous devriez essayer mv directory_old directory_new plutôt que mv directory_old/* directory_new/ . De cette façon, vous déplacez une chose au lieu d'un million de choses.
find src_image_dir/ -type f -name '*.jpg' -print0 | xargs -0r mv -t dst_image_dir/
- Cela ne débordera pas sur l'expansion des arguments.
- Vous pouvez spécifier l'extension du fichier, si vous le souhaitez. (-nom ...)
find -print0avecxargs -0vous permet d'utiliser des espaces dans les noms.xargs -rn'exécutera pasmvà moins qu'il y ait quelque chose à déplacer. (mvse plaindra si aucun fichier source n'est fourni).- La syntaxe
mv -tvous permet de spécifier d'abord la destination puis les fichiers source, nécessaires àxargs. - Déplacer tout le répertoire est bien sûr beaucoup plus rapide, puisqu'il s'effectue en temps constant quel que soit le nombre de fichiers qu'il contient, mais :
- le répertoire source disparaîtra pendant une fraction de temps et cela pourrait vous créer des problèmes ;
- si le processus utilise le répertoire courant comme répertoire de sortie (contrairement à toujours se référer à un chemin complet à partir d'un emplacement immobile), vous devrez le relancer. (comme vous le faites avec la rotation des journaux ).
D'ailleurs, je me demanderais si je dois vraiment déplacer une telle quantité de fichiers à la fois. Le traitement par lots est surestimé. J'essaie de ne pas accumuler d'énormes quantités de travail si je peux traiter les choses au moment où elles sont générées.
Si les deux répertoires résident sur le même système de fichiers, utilisez mv sur le RÉPERTOIRE et non sur le contenu du répertoire.
S'ils résident sur deux systèmes de fichiers différents, utilisez rsync :
rsync -av /source/directory/ /destination
Remarquez le / à la fin sur la source. Cela signifie qu'il copiera le CONTENU du répertoire et non le répertoire lui-même. Si vous laissez le / off, il copiera toujours les fichiers mais ils resteront dans un répertoire nommé /destination/directory . Avec le /, les fichiers seront juste en /destination
rsync conservera la propriété du fichier si vous l'exécutez en tant que root ou si les fichiers vous appartiennent. Il maintiendra également le mtime de chaque fichier individuel.