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 29/04/2013, à 11:39

hcm

[Résolu] Sauvegarde automatique sur introduction de clef USB

Bonjour,

Je souhaiterais pouvoir effectuer automatiquement le déplacement de fichiers de mon DD vers une clef USB dès son introduction.
Après avoir parcouru différents fils, j'ai vu que udev pouvait répondre à mon besoin.

J'ai donc créé ma règle udev, qui déclenche correctement l'appel à mon script sur détection de la clef.
Pour info, voici la règle:

ACTION=="add", SUBSYSTEMS=="usb", ATTR{serial}=="2805365621", RUN+="/home/moncompte/monscript.sh"

Le script, qui fonctionne correctement s'il est exécuté depuis un terminal, ne fonctionne pas lorsqu'il est lancé par udev.
Concrètement, il se présente comme suit:

#!/bin/bash
mv /home/moncompte/*.jpg /media/ma_clef;

Je pense que le problème vient du fait que le volume /media/ma_clef n'est pas encore monté au moment de l'exécution du script, mais je ne sais pas résoudre ce problème.
Faut-il utiliser la commande mount au sein du script avant de faire le mv ? Si oui, comment, car je ne sais pas monter ma clef manuellement ...

Je précise que j'ai placé ma règle en début et en fin de traitement de udev (en la renommant), en me disant que peut être le script pourrait se lancer après le montage de la clef, mais cela ne change rien au problème.

Merci pour votre aide

Dernière modification par hcm (Le 29/04/2013, à 15:08)


Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33

Hors ligne

#2 Le 29/04/2013, à 12:27

Edouard973

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Bonjour,
Pour sauvegarder mes documents sur ma clé USB, je fais une commande rsync entre le dossier et la clé USB. Puis, je prends cette ligne de commande que je mets dans gnome scheduler (ou tâches planifiées) pour qu'elle se lance toutes les minutes. Cela fonctionne parfaitement chez moi et je sent aucune latence de mon système lors de la sauvegarde vers ma clé. Pour la commande, j'utilise grsync et je fais un alt+r pour avoir la commande. Cependant, dans la version des dépôts, il manque les "..." pour les chemins dans la commande.
Cependant, quand la clé n'est pas présente, tu n'as aucun message d'erreur, ce qui est très pratique !!.
J'espère que ça sera utile.


Ubuntu 12.04  LTS Precise Pangolin 32 bits.
Un Netbook Asus et un PC Portable TOSHIBA

Hors ligne

#3 Le 29/04/2013, à 12:43

hcm

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

@Edouard973

Merci pour ta réponse mais cela ne correspond pas à mon besoin, car le script que je vais utiliser va s'enrichir avec des fonctionnalités qui ne peuvent pas s'enchaîner cycliquement.
Il me faut donc vraiment provoquer le déclenchement de l'appel au script sur détection de l'introduction de la clef USB, et uniquement dans ce cas.


Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33

Hors ligne

#4 Le 29/04/2013, à 12:44

Edouard973

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Quelles fonctionnalités précisément?


Ubuntu 12.04  LTS Precise Pangolin 32 bits.
Un Netbook Asus et un PC Portable TOSHIBA

Hors ligne

#5 Le 29/04/2013, à 12:47

hcm

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Un arrêt de la machine par exemple.


Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33

Hors ligne

#6 Le 29/04/2013, à 12:48

Edouard973

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Tu peux faire un script avec rsync avec une commande d'arrêt de la machine.


Ubuntu 12.04  LTS Precise Pangolin 32 bits.
Un Netbook Asus et un PC Portable TOSHIBA

Hors ligne

#7 Le 29/04/2013, à 12:54

hcm

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Non, ça ne me convient pas. Encore une fois, l'appel à ce script DOIT se faire sur détection de l'introduction de ma clef USB. C'est un besoin fonctionnel.
Après qu'on utilise rsync ou mv au sein de ce script, peu importe. Le problème reste entier; le volume de la clef n'est pas encore monté au moment de l'appel au script, et je ne sais pas comment résoudre ce problème ...


Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33

Hors ligne

#8 Le 29/04/2013, à 12:57

tiramiseb

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Salut,

Deux approches possibles :

1/ ta clé USB n'est jamais automatiquement montée, auquel cas il faut mettre la commande "mount" dans ton script (si nécessaire je te donnerai la syntaxe exacte après)

2/ ta clé USB se monte automatiquement mais ton script est exécuté avant, auquel cas un contournement pourrait être de faire une boucle qui attend que le volume soit monté en début du script

Hors ligne

#9 Le 29/04/2013, à 13:00

miniSeb

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Tu as essayé en mettant un sleep dans ton script pour différer l'exécution et attendre que la clef soit montée ?

Edit:
La solution de la boucle de tiramiseb est meilleure que le sleep wink

Dernière modification par miniSeb (Le 29/04/2013, à 13:01)

Hors ligne

#10 Le 29/04/2013, à 13:08

hcm

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

@tiramiseb
Je suis dans le cas de figure 1 (la clef se monte automatiquement). Mais j'ai peur que l'attente dans le script ne bloque tout car je crois avoir lu qqpart qu'il ne fallait pas que le traitement dans le script lancé par udev soit bloquant ... Si le mount automatique ne se fait qu'après exécution du script lancé par udev, le script va rester coincé. Je vais faire l'essai ...

Edit: C'est bien ce que je pensais. Le script reste bloqué indéfiniment en attente de montage de la clef, qui doit se produire après la fin du script lancé par udev j'imagine.
Ta piste 2 m'intéresse cependant: puis-je configurer cette machine pour désactiver le montage automatique de la clef, et l'effectuer dans mon script ? Si oui, comment ?

Dernière modification par hcm (Le 29/04/2013, à 13:30)


Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33

Hors ligne

#11 Le 29/04/2013, à 15:07

hcm

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Finalement après quelques autres recherches je suis tombé sur la solution de cette page qui fonctionne très bien.

Toute l'astuce consiste a faire du script lancé par la commande RUN de udev, une tâche de fond (présence du & en fin de script). Ainsi, bien que le script soit démarré avant le montage, il ne l'empêche pas de se réaliser. Une fois le montage détecté, le script lancé par udev se poursuit en effectuant la sauvegarde.


Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33

Hors ligne

#12 Le 29/04/2013, à 15:11

Josepe36

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Bonjour à tous

je me permet d'intervenir sur ce fil afin de faire profiter de mon experience dans ce domaine.

Voici se qui est sympa en utilisant dbus :

 #!/bin/bash

    ACTIONS(){
        #YOUR ACTIONS HERE
        echo "I DO WANT I WANT NOW AND EVEN CONTROL THE KEY NAME"
    } 

    LOOP(){
        #=== LOOP IS LSTENING DBUS EVENT, 
        interface="org.gtk.Private.RemoteVolumeMonitor"
        member="VolumeAdded"
        dbus-monitor --profile "interface='$interface',member='$member'"|
        while read line
        do
            if echo $line|grep "VolumeAdded" 1>/dev/null
                then 
                    ACTIONS;
                    # LEAVE THE LOOP
                    kill -15 $$
            fi
        done    
    }
LOOP

Code réduit au plus simple, a vous de voir pour les controles et le reste.

Dernière modification par Josepe36 (Le 29/04/2013, à 15:12)


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#13 Le 29/04/2013, à 15:12

tiramiseb

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Toute l'astuce consiste a faire du script lancé par la commande RUN de udev, une tâche de fond (présence du & en fin de script).

C'est ce que je t'aurais conseillé plus tôt si je n'étais pas chez un client wink
(avec un "nohup" devant aussi, ça peut le faire)

Hors ligne

#14 Le 02/08/2013, à 13:22

omnimax

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

salut Josepe36,

Dans ton code où tu définis quel clé usb doit servir à la sauvegarde ?
>si j'ai 36 clés usb et que je veux qu'une seule serve à la sauvegarde et que les autres n’interviennent pas dans le script, comment faire ?

merci pour ta réponse;)

Josepe36 a écrit :

Bonjour à tous

je me permet d'intervenir sur ce fil afin de faire profiter de mon experience dans ce domaine.

Voici se qui est sympa en utilisant dbus :

#!/bin/bash

    ACTIONS(){
        #YOUR ACTIONS HERE
        echo "I DO WANT I WANT NOW AND EVEN CONTROL THE KEY NAME"
    }

    LOOP(){
        #=== LOOP IS LSTENING DBUS EVENT,
        interface="org.gtk.Private.RemoteVolumeMonitor"
        member="VolumeAdded"
        dbus-monitor --profile "interface='$interface',member='$member'"|
        while read line
        do
            if echo $line|grep "VolumeAdded" 1>/dev/null
                then
                    ACTIONS;
                    # LEAVE THE LOOP
                    kill -15 $$
            fi
        done   
    }
LOOP

Code réduit au plus simple, a vous de voir pour les controles et le reste.

Dernière modification par greg2007 (Le 02/08/2013, à 13:23)


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#15 Le 02/08/2013, à 17:40

hcm

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Salut,

greg2007 a écrit :

Dans ton code où tu définis quel clé usb doit servir à la sauvegarde ?

L'identifiant de la clef USB n'est pas défini dans le code du script, mais dans la règle utilisée par udev (fichier .rules) pour déclencher l'exécution du script.
Le code et l'identifiant de la clef sont donc totalement décorrélés.

Je n'ai plus la machine en question sous les yeux, donc je peux difficilement t'en dire plus, car je n'ai pas gardé trace du fichier .rules que j'avais créé pour l'occasion. Mais en utilisant le nom du fabricant de la clef et son identifiant, on peut limiter le déclenchement du script à une clef précise.

Je n'ai plus l'information précise (le PC est loin maintenant) mais je me rappelle que la page de doc de udev donne toutes les informations utiles pour cela. A la fois sur la méthode pour trouver l'identifiant unique de ta clef, et pour créer ton fichier .rules


Ubuntu 22.04.1 LTS - 64 bits / Intel Pentium(R) Dual CPU E2200 @ 2.20GHz × 2 / 2 Go RAM / 1,1 To DD / Carte Graphique Intel G33

Hors ligne

#16 Le 03/08/2013, à 11:31

omnimax

Re : [Résolu] Sauvegarde automatique sur introduction de clef USB

Merci Hcm pour ta réponse, je pige mieux maintenant wink


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne