Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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