Différences entre les versions de « Copie de nombreux fichiers »

De BlaxWiki
Aller à la navigationAller à la recherche
Ligne 18 : Ligne 18 :
## la commande si dessous va lancer la copie, et nous retournera le temps que cela a mis ##
## la commande si dessous va lancer la copie, et nous retournera le temps que cela a mis ##
a=0;time for (( ix=0, cnt=${#names[@]} ; ix<$cnt; ix++ )) ; do a=$(($a+1));if [ ! -f $DEST/${names[ix]} ]; then cp -rf  $SRC/${names[ix]} $DEST;echo "+${names[ix]}";else  echo -n -e "$a\r";fi; done
a=0;time for (( ix=0, cnt=${#names[@]} ; ix<$cnt; ix++ )) ; do a=$(($a+1));if [ ! -f $DEST/${names[ix]} ]; then cp -rf  $SRC/${names[ix]} $DEST;echo "+${names[ix]}";else  echo -n -e "$a\r";fi; done
</pre>
 


## le systeme affiche le numero du fichier en cours de traitement (variable a) et copie le fichier si il n’existe pas sur la destination : Donc ne marche que si il n’y a pas de modification de fichier,
## le systeme affiche le numero du fichier en cours de traitement (variable a) et copie le fichier si il n’existe pas sur la destination : Donc ne marche que si il n’y a pas de modification de fichier,
## uniquement des creations.
## uniquement des creations.
</pre>




[[Catégorie:Script]]
[[Catégorie:Script]]

Version du 28 avril 2017 à 10:41

Ce script est à utiliser dans le cas de copie de millions de fichiers, qui ne passent pas via rsync ou cp. Pour info le liste de 13 millions de fichiers utilisait un peu plus de 2Go de ramn, il faut donc s'assurer qu on a assez de ram sur le serveur pour ne pas le crasher.


##### SQUARECLOCK 
SRC=/opt/mnt/isilon/squareclock_data/CM/Iterations
DEST=/opt/mnt/isilon-nl400/squareclock_data/CM/Iterations


## un > fichiet  ne sert à rien, ca ne met rien dedans. Cette commande va mettre en mémoire la liste de tous les fichiers. La commande est à lancer dans le répertoire Source ##
names=(*)   

## Commande pas obligatoire mais qui permet d affichier les fichiers, voir de les mettre dans un fichier
for (( ix=0, cnt=${#names[@]} ; ix<$cnt; ix++ )) ; do echo "${names[ix]}";done
for (( ix=0, cnt=${#names[@]} ; ix<$cnt; ix++ )) ; do echo "${names[ix]}" >> /listfichier;done


## la commande si dessous va lancer la copie, et nous retournera le temps que cela a mis ##
a=0;time for (( ix=0, cnt=${#names[@]} ; ix<$cnt; ix++ )) ; do a=$(($a+1));if [ ! -f $DEST/${names[ix]} ]; then cp -rf  $SRC/${names[ix]} $DEST;echo "+${names[ix]}";else  echo -n -e "$a\r";fi; done


## le systeme affiche le numero du fichier en cours de traitement (variable a) et copie le fichier si il n’existe pas sur la destination : Donc ne marche que si il n’y a pas de modification de fichier,
## uniquement des creations.