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/11/2011, à 11:36

boytruc

Rsync et copie incrémentale d'après un fichier historique

Bonjour

Je souhaite faire quelque chose d'assez particulier.

J'ai un dossier "Source" avec des fichiers qui sont mis à jour par d'autres (ajout - suppression) et j'ai un dossier "Destination" dans lequel un script s'occupe de renommer parfaitement ces fichiers suivant une nomenclature (script php).

Le problème est que vue que les fichiers dans le dossier "Destination" sont renommés, rsync les recopie et mon script les renommes, bref c'est le bordel.

Je souhaitais savoir si rsync permettait de sauvegarder dans un fichier texte les fichiers qu'il a copié. Bref qu'il se base sur un historique annexe plutôt que de vérifier ce qui a déjà été copié (corriger moi si je me trompe).

Merci d'avance pour vos réponses et autres pistes.

Dernière modification par boytruc (Le 10/11/2011, à 11:38)

Hors ligne

#2 Le 10/11/2011, à 12:18

Brunod

Re : Rsync et copie incrémentale d'après un fichier historique

Peux-tu lier les deux tâches pour ne recopier (rsync) qu'après avoir renommé ?


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#3 Le 10/11/2011, à 12:29

boytruc

Re : Rsync et copie incrémentale d'après un fichier historique

Brunod a écrit :

Peux-tu lier les deux tâches pour ne recopier (rsync) qu'après avoir renommé ?

Merci pour ta réponse.

Je ne comprends pas trop ce que tu veux faire. Ma commande de renommage est un url que je pointe avec un wget. Celui bosse seul ensuite et génére du xml. Bref je ne pense pas que cela soit possible.

Hors ligne

#4 Le 11/11/2011, à 00:56

boytruc

Re : Rsync et copie incrémentale d'après un fichier historique

Alors, je cherche à récupérer les fichiers images d'un dossier (qui est mise à jour automatiquement) par leur extension (ça pas de soucis) puis je cherche à les copier dans un dossier ou un script php d'un site s'occupe d'eux (renommage et création d'un fichier xml).
Le souci c'est que vu qu'il les renomme, quand je relance ma copie il les remet et le script les renomme. J'ai donc tenté d'utiliser la commande --backup d'rsync avec un dossier --backup-dir définie, mais cela ne fonctionne toujours pas, il continue de renvoyer les fichier dans le dossier de backup malgré leurs présence dans le dossier 'incremental'.

Voici mon code.

#!/bin/bash
find '/home/nom/image' -name '*.jpg' | while read FILE ; do rsync --backup --backup-dir=incremental --suffix=.old  "$FILE" /var/www/media ; done
wget --spider 'http://monscript.php' ;
#exit 0

A l’exécution de mon code dans le dossier 'incremental' il ne met pas tous les fichiers copiés avec l'extension '.old'. Je suis obligé de lancer deux fois la commande

find '/home/nom/image' -name '*.jpg' | while read FILE ; do rsync --backup --backup-dir=incremental --suffix=.old  "$FILE" /var/www/media ; done

Merci d'avance pour votre aide.

PS; un ptit plus serait de remplacer les points par un espace juste après avoir copié les *.jpeg. Mon script a du mal à différencier les deux. Je pensais refaire une commande find et chercher les fichiers puis leur faire sauter leurs point avec 'sed'? :shifty:

Hors ligne

#5 Le 28/11/2011, à 22:59

boytruc

Re : Rsync et copie incrémentale d'après un fichier historique

Après quelques galères, la réponse m'a été apporté ici.
C'est en KornShell

#!/bin/ksh
DEST_DIR=/destination
HIST_DIR=/images_bck
SOURCE_DIR=/images
 
find ${SOURCE_DIR} -name "*.jpg" >${HIST_DIR}/tmp.file
exec 3<${HIST_DIR}/tmp.file
 
while read file <&3;do
  file_name=$(basename "${file}")
  if [ ! -f "${HIST_DIR}/${file_name}.old" ];then
    cp -p "${file}" "${HIST_DIR}/${file_name}.old"
    cp "${file}" "${DEST_DIR}"
  fi
done
exec 3<&-
[ -f ${HIST_DIR}/tmp.file ] && rm -f ${HIST_DIR}/tmp.file

Hors ligne