Adott egy 3D nyomtatáshoz használt pendrive, amit minden vágás mentésekor ki kell húzni a nyomtatóból, bedugni a gépbe, vágni, menteni rá, lecsatolni.
A következő leírás bemutatja hogyan lehet egy lokális mappát automatikusan átszinkronizálni pendrivera pusztán az eszköz bedugásával.
A pendriveot a Desktop automatikusan felcsatolja, de azt is akár tartalmazhatja a script.

Az eszközt udev segítségével figyeljük, ehhez először is tudni kell annak serial-ját, amit a következő paranccsal lehet lekérni:

  • sdX behelyettesítendő a megfelelő névre

udevadm info -p /sys/block/sdX/ | grep SERIAL_SHORT                                                                                    

Példa kimenet:


E: ID_SERIAL_SHORT=2021072718430937

Készítsünk egy új rulet a következő tartalommal:

  • a rule neve tetszőlegesen változtatható
  • az X helyére kerüljön a serial (példa: 2021072718430937)
  • a /path/to pedig mutasson egy valós helyre, amin belül van egy sync.sh

ACTION=="change", SUBSYSTEMS=="usb", ATTRS{serial}=="X", RUN+="/path/to/sync.sh"

A rule újratöltéséhez futtassuk a következő parancsokat:


sudo udevadm control -R
sudo udevadm control --reload-rules && sudo udevadm trigger

A sync.sh legyen futtatható:


chmod +x sync.sh

A tartalma:

  • X az aktuális userünk neve
  • Y a /run/media-n belüli drive neve legyen

#!/bin/bash

USER="X"
DRIVE="Y"

USERID=$(id -u $USER)
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USERID/bus
export DISPLAY=$d

CURA_PATH="/home/$USER/Documents/Cura/"
DRIVE_PATH="/run/media/$USER/$DRIVE/"

su $USER -c "/usr/bin/notify-send 'Cura sync' 'Synchronization is started'"
rsync -avh --progress $CURA_PATH $DRIVE_PATH
sync
su $USER -c "/usr/bin/notify-send 'Cura sync' 'Synchronization is done'"

A script-et root futtatja, ezért is fontos a teljes elérési utakat használni. Beállítja a notify-send parancshoz szükgéseg env változókat, hogy az adott bejelentkezett felhasználónknak legyen kiküldve az étesítés. Értesítést küld a sync kezdéséről, rsync-kel átmásolja a fájlokat, szinkronizál és ismét értesítést küld.
Az utolsó értesítés után akár már ki is húzható az eszköz, minden adat mentődött és ki lett írva rá.