#1 Le 10/10/2009, à 14:10
- bugs néo
programme de synchronisation basé sur la taille des fichier [résolu]
Bonjour voulant synchronisation des dossiers entre mon pc portable et mon pc fixe j'ai commencer à faire un programme:
#!/bin/bash
dos1=$1
dos2=$2
resultat=$3
for fic1 in `find ${dos1} -type f`
do
fic1=`echo ${fic1}`
fic2=`echo ${fic1} | sed -e "s|${dos1}|${dos2}|"`
if [ -e ${fica2} ]; then
size1=`stat -c%s ${fic1}`
size2=`stat -c%s ${fic2}`
if [ "${size1}" != "${size2}" ]; then
echo "les fichiers ${fic1} et ${fic2} diffèrent." |tee -a ${resultat}
cp $fic1 $fic2
fi
else
echo "fichier ${fic2} non trouvé." |tee -a ${resultat}
cp $fic1 $fic2
fi
done
Mais le soucis c'est que quand le nom des fichier contient des espaces il coupe les noms à chaque espace.
Donc si quelqu'un peu me dire comment faire pour résoudre ce problème cette personne serai gentille de m'expliqué.
Dernière modification par bugs néo (Le 11/10/2009, à 12:34)
jeu de course open source earth-race (le jeu est en réécriture complète depuis janvier, afin de pouvoir aller plus vite par la suite)
Hors ligne
#2 Le 10/10/2009, à 14:12
- wido
Re : programme de synchronisation basé sur la taille des fichier [résolu]
Bonjour, tu mets des " " autour de tes variables.
Hors ligne
#3 Le 10/10/2009, à 14:23
- bugs néo
Re : programme de synchronisation basé sur la taille des fichier [résolu]
alors j'ai le problème qui est en partie résolu mais il reste toujours présent le code est maintenant :
#!/bin/bash
dos1="$1"
dos2="$2"
resultat="$3"
for fic1 in `find "${dos1}" -type f`
do
echo "${fic1}"
fic2=`echo "${fic1}" | sed -e "s|${dos1}|${dos2}|"`
if [ -e "${fica2}" ]; then
size1=`stat -c%s "${fic1}"`
size2=`stat -c%s "${fic2}"`
if [ "${size1}" != "${size2}" ]; then
echo "les fichiers ${fic1} et ${fic2} diffèrent." |tee -a ${resultat}
cp "$fic1" "$fic2"
fi
else
echo "fichier ${fic2} non trouvé." |tee -a ${resultat}
cp "$fic1" "$fic2"
fi
done
jeu de course open source earth-race (le jeu est en réécriture complète depuis janvier, afin de pouvoir aller plus vite par la suite)
Hors ligne
#4 Le 10/10/2009, à 14:59
- kyncani
Re : programme de synchronisation basé sur la taille des fichier [résolu]
Il y a aussi rsync --size-only
Hors ligne
#5 Le 10/10/2009, à 15:07
- bugs néo
Re : programme de synchronisation basé sur la taille des fichier [résolu]
heu j'ai essayé sur un dossier de vidéo mais sa prenais un temps fou par vidéo (alors que les vidéos était sur les deux disque dur) alors que sa aurai du être très rapide.
Avec mon programme il détecte instantanément si les fichiers sont identique. enfin seulement ceux qui n'ont pas d'espace dans le nom.
Dernière modification par bugs néo (Le 10/10/2009, à 17:27)
jeu de course open source earth-race (le jeu est en réécriture complète depuis janvier, afin de pouvoir aller plus vite par la suite)
Hors ligne
#6 Le 11/10/2009, à 12:34
- bugs néo
Re : programme de synchronisation basé sur la taille des fichier [résolu]
Bon le problème est résolu ici -> http://forum.ubuntu-fr.org/viewtopic.ph … 1#p2977331
jeu de course open source earth-race (le jeu est en réécriture complète depuis janvier, afin de pouvoir aller plus vite par la suite)
Hors ligne
#7 Le 14/10/2009, à 13:17
- k-o-x
Re : programme de synchronisation basé sur la taille des fichier [résolu]
Pour info, lorsqu'on travaille avec des fichiers/dossiers comportant des espaces, ceci ne fonctionnera jamais :
for filename in `find ...`; do
...
done
Il faut utiliser :
find ... | while read filename; do
...
done
Et ne pas oublier, comme dit plus haut, de mettre des guillemets autour de chaque utilisation de la variable utilisée dans chaque commande.
Dernière modification par k-o-x (Le 14/10/2009, à 13:20)
Hors ligne
#8 Le 19/10/2009, à 17:50
- bugs néo
Re : programme de synchronisation basé sur la taille des fichier [résolu]
ok merci de l'info
jeu de course open source earth-race (le jeu est en réécriture complète depuis janvier, afin de pouvoir aller plus vite par la suite)
Hors ligne