Pendrive automatikus szinkronizálás
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á.