Script comparaison de contenu de dossier et choix de copier
Fermé
goodsayan
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014
-
Modifié par goodsayan le 22/04/2013 à 12:25
goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014 - 22 avril 2013 à 17:28
goodsayan Messages postés 61 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 8 décembre 2014 - 22 avril 2013 à 17:28
A voir également:
- Linux comparer 2 répertoires
- Liste déroulante de choix excel - Guide
- Script vidéo youtube - Guide
- Dossier appdata - Guide
- Mettre un mot de passe sur un dossier - Guide
- Impossible de supprimer un dossier - Guide
4 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
22 avril 2013 à 13:15
22 avril 2013 à 13:15
Salut,
rsync fait ça très bien et plus simplement ;-))
rsync fait ça très bien et plus simplement ;-))
goodsayan
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014
12
Modifié par goodsayan le 22/04/2013 à 14:24
Modifié par goodsayan le 22/04/2013 à 14:24
J'étais parti au début avec "mirror"et j'ai le meme probleme avec "rsync". Il copie des fichiers de noms identiques mais qui ont des dates de modification différentes...
Je voudrais juste qu'il copie les fichiers manquants...
Je voudrais juste qu'il copie les fichiers manquants...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
22 avril 2013 à 16:04
22 avril 2013 à 16:04
Apparemment en utilisant l'option "--ignore-existing" de rsync ça le ferait...
Dans repB le fichier "asc" est manquant et le fichier "plop" est différent.
Dans repB le fichier "asc" est manquant et le fichier "plop" est différent.
$ ls -l repA/ total 24 -rw-r--r-- 1 jp jp 33 avril 22 15:14 asc -rw-r--r-- 1 jp jp 6308 avril 22 09:45 docu -rw-r--r-- 1 jp jp 44 avril 22 15:16 oct -rw-r--r-- 1 jp jp 276 avril 22 15:39 plop -rw-r--r-- 1 jp jp 226 avril 22 15:40 script.sed $ ls -l repB/ total 20 -rw-r--r-- 1 jp jp 6308 avril 22 09:45 docu -rw-r--r-- 1 jp jp 44 avril 22 15:16 oct -rw-r--r-- 1 jp jp 236 avril 22 15:58 plop -rw-r--r-- 1 jp jp 226 avril 22 15:40 script.sed $ rsync -av --ignore-existing repA/ repB/ sending incremental file list ./ asc sent 187 bytes received 34 bytes 442.00 bytes/sec total size is 6887 speedup is 31.16 $ ls -l repB/ total 24 -rw-r--r-- 1 jp jp 33 avril 22 15:14 asc -rw-r--r-- 1 jp jp 6308 avril 22 09:45 docu -rw-r--r-- 1 jp jp 44 avril 22 15:16 oct -rw-r--r-- 1 jp jp 236 avril 22 15:58 plop # Aucune modif -rw-r--r-- 1 jp jp 226 avril 22 15:40 script.sed $
goodsayan
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014
12
Modifié par goodsayan le 22/04/2013 à 16:28
Modifié par goodsayan le 22/04/2013 à 16:28
Merci! Y a t'il un moyen de faire ca étape par étape avec un choix de l'utilisateur?
Par exemple, j'aimerais qu'avant de copier le fichier "asc" il demande une confirmation a l'utilisateur? Et pareil à chaque fois qu'il y a un fichier nouveau
Par exemple, j'aimerais qu'avant de copier le fichier "asc" il demande une confirmation a l'utilisateur? Et pareil à chaque fois qu'il y a un fichier nouveau
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
22 avril 2013 à 16:49
22 avril 2013 à 16:49
Avec rsync non ;-(
goodsayan
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014
12
22 avril 2013 à 17:28
22 avril 2013 à 17:28
Dommage...
goodsayan
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014
12
Modifié par goodsayan le 22/04/2013 à 16:46
Modifié par goodsayan le 22/04/2013 à 16:46
J'avance un peu sans Rsync... Ca fonctionne presque! J'ai juste un soucis si le nom du fichier contient des espaces. Comment faire? (EDIT Résolu avec les double quote sur le nom de fichier)
#!/bin/sh DISTANT="/home/jc/Bureau/Test1/" LOCAL="/home/jc/Bureau/Test2" file1="/tmp/compDossier1" file2="/tmp/compDossier2" file3="/tmp/compDossier3" #afficher les dossiers Distant et Local echo "le dossier distant est: \"$DISTANT\"" echo "le dossier local est: \"$LOCAL\"" #ajouter le cas échéant un "/" final aux noms de dossier [ -z "$(echo "$DISTANT"|grep "/$")" ] && DISTANT="$DISTANT/" [ -z "$(echo "$LOCAL"|grep "/$")" ] && LOCAL="$LOCAL/" #remplacer "/" par "\/" (pour le sed) DISTANTm=$(echo "$DISTANT"|sed "s#/#\\\/#g") LOCALm=$(echo "$LOCAL"|sed "s#/#\\\/#g") #lister les 2 dossiers find "$DISTANT" | sed "s/^$DISTANTm//" | sort >$file1 find "$LOCAL" | sed "s/^$LOCALm//" | sort >$file2 #Afficher les fichiers différents comm -3 $file1 $file2 > $file3 echo -------------------- cat $file3 echo -------------------- #nombre de lignes a=$(cat $file3 | wc -l) #recuperation des noms de fichiers de file3 for (( i=1; i <=a; i++ )) do Nom=$(sed -n "${i}p" $file3) echo -n "Voulez vous copier le fichier "$Nom"? (o/n): " read reponse if [ "$reponse" = o ] || [ "$reponse" = O ] || [ "$reponse" = oui ] || [ "$reponse" = OUI ] ; then cd $DISTANT cp -r "$Nom" $LOCAL fi done rm $file1 $file2 $file3
goodsayan
Messages postés
61
Date d'inscription
mardi 15 février 2005
Statut
Membre
Dernière intervention
8 décembre 2014
12
Modifié par goodsayan le 22/04/2013 à 17:30
Modifié par goodsayan le 22/04/2013 à 17:30
Ca marche maintenant comme je veux.
Par contre le répertoire DISTANT est sur un serveur SFTP.
J'arrive à me connecter avec la commande suivante:
lftp sftp://XXXX:XXXX@IP:PORT -e "mirror /downloads /media/freebox/Téléchargements; quit"
Comment puis je adapter ce script pour que cela marche?
Merci
Par contre le répertoire DISTANT est sur un serveur SFTP.
J'arrive à me connecter avec la commande suivante:
lftp sftp://XXXX:XXXX@IP:PORT -e "mirror /downloads /media/freebox/Téléchargements; quit"
Comment puis je adapter ce script pour que cela marche?
Merci