rsync en sortie de darktable

Bonjour
Je souhaiterais que cette commande :

rsync -avr --delete /home/philippe/Images/ /media/philippe/sauvegarde/Images

se fasse automatiquement à la fermeture de Darktable.

je suis nul en script, est-ce possible et si oui savez-vous comment faire ?

Pas besoin d’un script, tu peux mettre dans ton .bash_aliases ou .bash (si le 1er n’existe pas) :

alias darktable='/usr/bin/darktable ; /usr/bin/rsync -avr --delete /home/philippe/Images/ /media/philippe/sauvegarde/Images >> /tmp/rsync.log 2>&1'

Du coup, le lancement de darktable via ton compte (après déconnexion/reconnexion) lancera cet alias qui :

  1. lance DT
  2. fait ton rsync en plaçant la sortie écran à la fin du fichier /tmp/rsync.log, avec aussi les erreurs éventuelles.

Je me suis renseigné ici Alias
Je ne connaissais pas
Merci de ta réponse

Non, ça ne fonctionne pas …
J’ai créé le fichier .bash_aliases dans mon home à côté du fichier .bashrc et j’ai copié ta commande.
J’ai mis un fichier témoin sur le disque dur de l’ordi et rien n’a été transféré sur le DD externe.

Quelle distribution Linux utilises-tu ? (Ubuntu avec Unity ?)

Comment lances-tu DT ?

À partir d’un Terminal (Ctrl + Alt + T), que se passe-t-il si tu tapes :

/usr/bin/darktable ; /usr/bin/rsync -avr --delete /home/philippe/Images/ /media/philippe/sauvegarde/Images

Que donne la commande :

alias

La commande alais donne ceci :
philippe@debiandeletree:~$ alias
alias darktable=‹ /usr/bin/darktable ; /usr/bin/rsync -avr --delete /home/philippe/Images/ /media/philippe/sauvegarde/Images >> /tmp/rsync.log 2>&1 ›
alias ls=‹ ls --color=auto ›
philippe@debiandeletree:~$

OK @valmy, c’est donc que ton lanceur dans « Activités » ne prend pas en compte l’alias. Il faut peut-être toucher le fichier de ce lanceur pour y replacer l’appel à darktable ou /usr/bin/darktable par :

/usr/bin/darktable ; /usr/bin/rsync -avr --delete /home/philippe/Images/ /media/philippe/sauvegarde/Images >> /tmp/rsync.log 2>&1

Ultra galère de poster les réponses en ce moment… des erreurs de protocole en veux-tu en voilà…

Comment trouver le fichier du lanceur d’applications ?

Sur une Ubuntu, c’est le fichier /usr/share/applications/darktable.desktop dans lequel effectivement, on trouve :

Exec=/usr/bin/darktable %U TryExec=/usr/bin/darktable

A priori, selon ton display manager (gnome ? kde ?), tu dois pouvoir le reproduire et l’instancier dans un dossier de ton home (.local/share/applications ?) avec un « Exec= » qui va bien.

Je suis sous gnome.
Dans usr/share/applications il y a l’icône de Darktable et dans les propriétés de l’icône , j’ai : /usr/bin/darktable %U dans le champ « commande ».
Il faudrait remplacer la commande existante par la tienne mais, en root dans le terminal, je n’arrive pas à appeler cet icône pour en modifier les propriétés.

Ça reste assez difficile de poster une réponse ici : 4ème tentative !..

D’après ce que tu écris @valmy, tu as donc bien un fichier /usr/share/applications/darktable.desktop, ce que tu nommes l’icône.

Je te propose de saisir dans ton Terminal :

cp /usr/share/applications/darktable.desktop ~/.local/share/applications

Tu vas ainsi recopier le lanceur de DT fourni par le package dans une nouvelle version perso.
Ensuite, avec ton navigateur de fichiers, tu te places dans .local/share/applications et tu y modifies les propriétés de l’icône darktable (en fait c’est ton nouveau lanceur darktable.desktop) et dans Commande: tu saisis :

sh -c '/usr/bin/darktable ; /usr/bin/rsync -avr --delete /home/philippe/Images/ /media/philippe/sauvegarde/Images >> /tmp/rsync.log 2>&1'

Après ça, il te faut remplacer l’icône du lanceur standard de DT par ton nouveau perso avec ta commande. Et là, comme ça fait très longtemps que je n’utilise plus GNOME, je te renvoies soit vers ici, soit vers le support communautaire Debian ou bien un utilisateur de GNOME un peu averti saura te dire précisément comment faire.

Sinon, en double-cliquant sur ton nouvel icône DT dans .local/share/applications, ça doit à présent lancer DT et en sortie (et quel que soit le status de sortie de DT) la synchro de Images sur sauvegarde/Images sera faite.

J’ai fait exactement comme tu indiques et ça fonctionne.
Il me reste à trouver le moyen d’écraser l’ancien avec le nouveau.
Merci Manu pour ta patience et ton aide précieuse.
Philippe

As-tu pensé à vider le cache du navigateur après la maintenance de ce WE ?

moi je préfère lancer automatiquement une fonction via inotifywait

sudo apt-get install inotify-tools
inotifywait -m -e CLOSE_NOWRITE /usr/bin/darktable | while read l ; do
… faire ce que l’on veut …
$l contient le retour de inotifywait
done

c’est mieux de faire via ce script autrement que la commande enchainée comme dite si on lance ./usr/bin/darktable à la place de la commande enchainée ou alors via un menu ou un autre programme la copîe automatique ne se fait pas.

pour le moment c’est un premier jet qui reste à améliorer.

Patrick L, avec inotify, il faut faire comment pour que la sauvegarde se fasse automatiquement à la fermeture de Darktable

installer inotify
sudo apt-get install inotify-tools

Je suppose que c’est dans un terminal :
inotifywait -m -e CLOSE_NOWRITE /usr/bin/darktable | while read l ; do

et après ?
rsync -avr --delete /home/philippe/Images/ /media/philippe/sauvegarde/Images

Ca sera automatique ?