# Script Rsync et problème de backup incrémentale

**URL:** <https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 3:48 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750 "2016-02-21T03:48:28Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![boytruc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/boytruc/32/3486_2.png) [@boytruc](https://www.debian-fr.org/u/boytruc)\
**Post date:** [Février 21, 2016, 3:48 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/1 "2016-02-21T03:48:28Z")

</div>

Bonjour à tous

“Ohhh non encore un newb!”

J’ai commencé un billet [ici](https://www.debian-fr.org/rsync-et-copie-incrementale-d-apres-un-fichier-historique-t36161.html) et on m’a conseillé de venir vous voir ici.

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

```auto

```

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:](https://www.debian-fr.org/uploads/default/original/1X/c2c6b2db4f768c7bf93cea265ed4e2c63ae01880.gif "Shifty")

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/2 "2016-02-21T03:49:12Z")

</div>

ricardo nous taille une réputation dans la section support.

Désolé d’avoir mis du temps à répondre, mais je t’ai pas oublié.

J’ai un peu de mal à comprendre. Grosso modo tu veut envoyer un ensemble de fichiers jpeg d’un dossier à un autre, puis les envoyer de ce dernier vers un site ?  
Et là dessus ton problème c’est que le site va renommer les fichiers et donc ton rsync va réenvoyer les même fichiers ?

Si c’est ça pourquoi ne pas simplement netoyer le dossier tempon entre temps ?

---

<div class="post-metadata">

**Author:** ![boytruc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/boytruc/32/3486_2.png) [@boytruc](https://www.debian-fr.org/u/boytruc)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/3 "2016-02-21T03:49:16Z")

</div>

Merci pour ton message.

En effet tu as bien saisie ce que je veux faire. Par contre je ne vois pas ce que tu veux dire sur le dossier tampon.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/4 "2016-02-21T03:49:16Z")

</div>

Je pense que Michel parle du second dossier, qui devrait être vidé, sitôt après qu’il ait fait son travail de transmission au dernier ???

---

<div class="post-metadata">

**Author:** ![boytruc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/boytruc/32/3486_2.png) [@boytruc](https://www.debian-fr.org/u/boytruc)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/5 "2016-02-21T03:49:16Z")

</div>

Je sèche encore un peu. Quand vous parler de dossier tampon, parlez vous de --backup-dir=…?

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/6 "2016-02-21T03:49:18Z")

</div>

## J’ai essayé de suivre ton script mais je ne suis pas fort en codage, moi. Je pense toutefois qu’il est logique que l’incrémentation ne fonctionne pas car tu en modifie l’extension donc il ne retrouve pas les mêmes noms. dossier de départ = depart dossier backup = relai dossier [www](http://www) = net

fichier depart = machin.jpg  
fichier relais = machin.old  
fichier net = machin.???  
------------ prochaine passe :  
fichier depart = machin.jpg  
relai cherche un “machin.jpg”, il n’'en voit pas, il ne voit qu’un “machin.old”, donc il copie en plus.

Enfin, je te dirai que je ne comprends pas bien ce que tu veux faire et ses raisons.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/7 "2016-02-21T03:49:19Z")

</div>

> [@boytruc](#):
>
> Je sèche encore un peu. Quand vous parler de dossier tampon, parlez vous de --backup-dir=…?

Tes images se trouve initialement à un endroit A, tu les prends pour les mettre à un dossier B, puis tu les envoie sur un serveur C pour finalement le remettre dans le dossier B.

Et d’après ce que je comprends à partir de la seconde itération tu a un problème parce que tu renvoie les fichiers du dossier B vers le serveur C qui ont déjà étaient envoyés.

Du coup ma question c’est pourquoi tu ne déplace pas les fichiers sur tu as envoyé sur C juste après les avoir envoyé.

Comme ça :  
[ol]  
[li]A → B[/li]  
[li]B → C[/li]  
[li]C → B[/li]  
[li]B → B/traité[/li][/ol]

---

<div class="post-metadata">

**Author:** ![boytruc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/boytruc/32/3486_2.png) [@boytruc](https://www.debian-fr.org/u/boytruc)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/8 "2016-02-21T03:49:21Z")

</div>

En faite je n’ai que deux dossier à proprement parler. Mon dossier B est celui ou les fichiers Jpeg vont, ils sont de suite repris par le script qui les renommes mais pas recopié pour être hébergé ailleurs.  
Je me suis mis a utiliser Rsync car on m’a dit qu’il permettait de faire de l’incrémental au sauvegardant un fichier témoin (avec suffix) dans le dossier de son choix.

L’idéal aurait été de copier mes fichiers d’un endroit à un autre et de noter dans un document ce qui a été fait, pour ensuite ne copier qu’à partir du document texte et non du dossier de destination.

J’ai du mal à comprendre ce que tu veux faire MisterFreez. B serait le dossier incrémental?

Un grand merci pour votre aide.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/9 "2016-02-21T03:49:22Z")

</div>

Quand ton script renomme les fichiers, il ne devrait pas les replacer au même endroit mais dans un dossier différent.  
Ainsi, le dossier B serait toujours chargé avec des fichiers jpeg  
Les fichiers modifiés en .truc ne seraient présents que dans un dossier C par exemple  
Donc :  
A ==\> B  
B ==\> C  
travail du script en C

Ainsi, B contient toujours les fichiers Jpeg et à chaque nouvelle copie avec rsync, ce dernier ne modifie que ce qui est différent.  
Oublie donc backup et backup-dir.

---

<div class="post-metadata">

**Author:** ![boytruc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/boytruc/32/3486_2.png) [@boytruc](https://www.debian-fr.org/u/boytruc)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/10 "2016-02-21T03:49:23Z")

</div>

Le problème est que le script php n’est pas du tout de moi. J’ai essayé de désactiver le renommage mais sans réussir. J’ai envoyé un mail au développeur pour qu’il m’aide et il m’a dit qu’il ne voulait pas désactiver cette fonction sinon cela fonctionnait vraiment mal.  
Je pense que se sera la même pour du traitement de fichier.

Je vais essayer de voir tout de même.

Merci

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/11 "2016-02-21T03:49:25Z")

</div>

Je ne connais rien en php mais éventuellement, tu peux te faire un petit script en bash.  
Quelle est exactement la finalité recherchée ?  
Je suppose que ce script ne fait pas que modifier l’extension, il encode de façon différente ?  
À quoi servent ces fichiers pour qu’ils aient besoin d’être modifiés ?

---

<div class="post-metadata">

**Author:** ![boytruc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/boytruc/32/3486_2.png) [@boytruc](https://www.debian-fr.org/u/boytruc)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/12 "2016-02-21T03:49:25Z")

</div>

En faite le script php génére de l’xml pour un flux RSS, ainsi que des news préformaté. C’est assez puissant. A la base c’est pour un podcast audio mais je détourne le concept.

Je suis vraiment étonné de ne pas trouver d’utilitaires ou de fonctions qui permettraient de copier d’un dossier à un autre des fichiers en prenant une référence annexe.

Je continue ma recherche. Merci !

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/13 "2016-02-21T03:49:25Z")

</div>

Je regrette mais je ne peux rien faire de plus, mes connaissances s’arrêtent là.  
 ![:006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif "salut")

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/14 "2016-02-21T03:49:30Z")

</div>

[quote=«&nbsp;boytruc&nbsp;»]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 ‹&nbsp;incremental&nbsp;›.  
[/quote]  
Normal, le dossier backup permet uniquement de sauvegarder les fichiers déjà présents dans la destination avant qu’ils ne soient recopiés (ou supprimés) depuis la source.  
Mais ce dossier n’est pas exploité au prochain tour de rsync … Donc étant renommés, rsync ne les trouve pas en destination, il les copie à nouveau. Si tu veux conserver ce mécanisme de renommage, il te faut gérer un fichier contenant la liste des fichiers à tranférer… c.a.d maintenir un fichier contenant la liste des fichiers à transférer (ou à exclure !)  
Une autre solution est d’utiliser ssh (ou lftp) qui te permettra de lister les fichiers distants (destination) et donc de déterminer ceux qui sont à synchroniser ou non …

> [@boytruc](#):
>
> A l’exécution de mon code dans le dossier ‹&nbsp;incremental&nbsp;› il ne met pas tous les fichiers copiés avec l’extension ‹&nbsp;.old&nbsp;›. Je suis obligé de lancer deux fois la commande
> 
> ```auto
> find '/home/nom/image' -name '*.jpg' | while read FILE ; do rsync --backup --backup-dir=incremental --suffix=.old "$FILE" /var/www/media ; done
> ```

Comme indiqué plus haut, rsync ne met dans le dossier backup que les fichiers déjà présents dans le dossier destination. Or ton script php les renomme, rsync ne les trouve pas dans le dossier destination et donc ne les copie pas en backup… Sauf si tu relances rsync et que ton script php n’a pas eu le temps de tout renommer… Et je pense que c’est ce qui se passe.

---

<div class="post-metadata">

**Author:** ![boytruc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/boytruc/32/3486_2.png) [@boytruc](https://www.debian-fr.org/u/boytruc)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/15 "2016-02-21T03:49:31Z")

</div>

> [@](#):
>
> il te faut gérer un fichier contenant la liste des fichiers à tranférer…

Je voudrais bien mais comment? Je continue mes petites recherches. Ca va marcher! 😃

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:49 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/16 "2016-02-21T03:49:33Z")

</div>

comme ça je dirais : en exploitant la sortie verbeuse de rsync… 😒

---

<div class="post-metadata">

**Author:** ![boytruc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/boytruc/32/3486_2.png) [@boytruc](https://www.debian-fr.org/u/boytruc)\
**Post date:** [Février 21, 2016, 3:52 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/17 "2016-02-21T03:52:20Z")

</div>

Rah toujours bloqué. Si quelqu’un a une idée?

---

<div class="post-metadata">

**Author:** ![boytruc](https://www.debian-fr.org/user_avatar/www.debian-fr.org/boytruc/32/3486_2.png) [@boytruc](https://www.debian-fr.org/u/boytruc)\
**Post date:** [Février 21, 2016, 3:53 UTC](https://www.debian-fr.org/t/script-rsync-et-probleme-de-backup-incrementale/34750/18 "2016-02-21T03:53:33Z")

</div>

Après quelques galères, la réponse m’a été apporté [ici](http://www.developpez.net/forums/d1155119/systemes/linux/systeme/copie-fichier-dapres-historique-annexe).  
C’est en KornShell

[code]#!/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[/code]
