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

De BlaxWiki
Aller à la navigationAller à la recherche
(Page créée avec « Ce script est à utiliser dans le cas de copie de millions de fichiers, qui ne passent pas via rsync ou cp ##### SQUARECLOCK SRC=/opt/mnt/isilon/squareclock_data/CM/It... »)
 
 
(3 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
Ce script est à utiliser dans le cas de copie de millions de fichiers, qui ne passent pas via rsync ou cp  
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.
<pre>


##### SQUARECLOCK  
##### SQUARECLOCK  
Ligne 6 : Ligne 7 :
DEST=/opt/mnt/isilon-nl400/squareclock_data/CM/Iterations
DEST=/opt/mnt/isilon-nl400/squareclock_data/CM/Iterations


cd /opt/mnt/isilon/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 ##
## Avant de lancer le names=(*) il faut etre dans le répertoire source    > 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=(*)   
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 ##
## 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


## 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.
</pre>




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

Version actuelle datée du 11 mai 2017 à 12: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

cd /opt/mnt/isilon/squareclock_data/CM/Iterations

## Avant de lancer le names=(*) il faut etre dans le répertoire source    > 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.