2019. május 1., szerda

Biztonsági mentés, szinkronizáció linuxról (NAS-ra) rsync használatával

Van egy Zyxel NSA325v2 NAS-om, aminek a szoftvere már elég elavult volt. Ha jól emlékszem, talán 2.4-es kernel volt alatta és már jóideje nem kapott frissítéseket sem. Ezért aztán úgy döntöttem, hogy feldobok egy debiant rá. Ez nem volt annyira egyszerű, de lehet csinálok majd egy leírást róla (már amennyire még emlékszem).

Lényeg az, hogy most egy OpenMediaVault fut rajta, néha frissítem is mikor eszembe jut, de úgy teszi a dolgát, bár lehetne még foglalkozni vele.

RAID0-ban vannak a lemezek benne és felmerült az ötlet, hogy mi lenne ha a saját gépem /home/adam könyvtárát tükrözném rá. Erre megfelelő program az rsync, ami szinte minden linux rendszeren megtalálható vagy elérhető.

Igazából egyetlen parancs az egész, ami ha jól van paraméterezve, akkor teszi a dolgát gond nélkül.

rsync -avz --delete --progress --exclude '.cache' --exclude '.local/share/baloo' /home/adam adam@192.168.0.195:/sharedfolders/raid1/Adam

Ezt kell futtatnom a gépemen és elkezdődik a folyamat. Elmagyarázom a fontosabb paramétereket:
rsync -> ez a szoftver neve
-avz -> ez most lényetelen, kell és legyen elég ennyi (a rsync manualban benne van, ha érdekel)
--delete -> lényegében ettől lesz a sima másolás helyett tükrözés, ami annyit takar, hogy ha valamit törlök a gépemen, akkor a távoli oldalon is törlődni fog.
--progress -> ez csak annyit tesz, hogy a folyamat közben kiírja az éppen másolt fájlokat. Akit nem érdekel ennyire részletesen a folyamat, nyugodtan kihagyhatja.
 --exclude 'valami'  -> a valami helyére beírod a kihagyni kívánt fájl vagy mappa nevét. Ha több mappát akarsz kihagyni, mint ahogy én is, akkor többször is használhatod a paramétert.
/home/adam -> nekem ez a forrás könyvtáram, ennek a tartalmát másolja
adam@192.168.0.195:/sharedfolders/raid1/Adam -> felhasználónév@szervercíme:/célmappa

Javasolt tesztelni, hogy valóban azt csinálja-e amit szeretnénk. Ha már van egy meglévő fájlunk és módosul a tartalma, azt is felülírja az újjal.

Miután megfelelően működik a dolog, érdemes lehet ütemezni a folyamatot, hogy automatikusan fusson le bizonyos időközönként. Mivel nálam jelszót kér a szerver a bejelentkezéskor, így nem fogom tudni automatizálni így (legalábbis még nem találtam megoldást erre) viszont van lehetőség ssh felett futtatni a rsync-et, így viszont automatizálható, mert generálok egy kulcsot magamnak, amivel a gép mindig be fog tudni lépni és lefut a script. De ezt majd egy következő blogban.

További linkek:
 https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/
 https://www.thegeekstuff.com/2011/01/rsync-exclude-files-and-folders/comment-page-1/

2019. április 30., kedd

Putty és COM port beállítása Linuxon

Üdvözlet!

Linuxon jóval szigorúbb a jogosultságkezelés, mint ahogy azt windows alatt megszokhattuk. A soros porthoz illetve más egyéb hardverekhez, perifériákhoz csak annak van hozzáférése, aki tagja a megfelelő csoport(ok)nak.

Egy ideje Manjaro-t használok (egyszer majd lehet írok róla, hogy miért), de kb. 10 évig használtam Linux Mintet, előtte és közben néha Ubuntu, Deepin és néhány más disztrót de a fő irányvonal a Mint volt. A legtöbb parancsot konzolban futtatjuk, akinek ez nem jön be, ne is álljon neki hasonló dolgoknak. Röviden a magyarázat annyi, hogy nagyon sok eszköznek nincs saját kijelzője vagy ha van is, akkor sem grafikus, ráadásul különböző feladatokra megannyi grafikus megoldás létezik Linux alatt, viszont sokszor macerásabb egy GUI programot telepíteni, mint beírni 2 parancsot.

Egy fontos dolgot megjegyeznék: a sudo parancs kiadása után rendszergazdai (root) jogosultságokkal dolgozunk, elvileg mindenhez hozzáférünk, minden egyes rendszerfájlt akár törölhetünk is, így nagyon figyeljetek, hogy mit csináltok és mindent olvassatok el inkább kétszer. Ha nem értesz valamit, ne kockáztass, ha számít a rendszered egészsége. Ha csak kísérletezel mondjuk virtuális gépben, akkor nincs nagy vesztenivalód.

No de térjünk is a lényegre.

cat /etc/group

A fenti parancs kilistázza a meglévő csoportokat, azok id számát és a tagjait (amennyiben van tagja az adott csoportnak).

Nálunk az a cél, hogy a tty és a dialout csoportban szerepeljen a felhasználónk. Mivel nekem a listában nem volt dialout, csak tty csoport, így először létre kell hozni a dialout csoportot a következő paranccsal: 

sudo groupadd dialout

Miután ez megvan, hozzá is adjuk a csoporhoz a felhasználónkat:

sudo usermod -a -G dialout ${USER}
 
Ne feletsük el a tty csoporthoz is hozzáadni magunkat: 

sudo usermod -a -G tty ${USER}

Amennyiben a usermod működése bővebben érdekel, nézd meg a manuálját: man usermod

Ahhoz, hogy a beállítások érvénybe lépjenek, újra be kell jelentkeznünk.

Debian alapú disztrókon elméletileg a portok innentől már elérhetők, viszont van ahol még a portok jogosultságát is meg kell adni.

A linuxos eszközökről dióhéjban: windowshoz képest, itt nincs eszközkezelő, viszont ha megnézzük, ott is létrejön egy-egy objektum amikor csatlakoztatunk egy hardvert és eltűnik ha lecsatlakozik. Természetesen léteznek programok Linuxon is, amik hasonlóképpen jelenítik meg az eszközöket, de számunkra most ez mellékes. Az eszközök a /dev/ mappában találhatók. Az eszközök neve árulkodik azok típusáról is. Pl. az sda, sdb, hda eszközök valamilyen merevlemez vagy ssd meghajtók lehetnek. Az sda1, sda2, stb... a partíciók sorban. a tty eszközök a soros portok. Ha van egy usb soros adapterünk, akkor annak feltételezhetően valami hasonló neve lesz: /dev/ttyUSB0. 
Amennyiben több ilyen is van, akkor /dev/ttyUSB1, stb...

Az USB eszközeinket az lsusb paranccsal tudjuk kilistázni:

[adam@adam-pc ~]$ lsusb
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 5986:02d5 Acer, Inc
Bus 001 Device 004: ID 0a5c:21e6 Broadcom Corp. BCM20702 Bluetooth 4.0 [ThinkPad]
Bus 001 Device 008: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

Ha több soros portunk van és esetleg nem tudjuk melyik melyik eszközhöz tartozik, akkor a következő parancs kiírja nekünk, méghozzá időrendben, így a legutolsó a legutoljára csatlakoztatott eszköz. Vannak ennél összetettebb és informatívabb megoldások, de kezdésnek ezt teszem közzé itt:

dmesg | grep tty

Ha megvan melyik eszköz kell nekünk, és még mindig nincs hozzáférésünk akkor beállítjuk a jogosultságait ideiglenesen (sajnos ez nem permanens, újraindítás vagy újracsatlakoztatás után újra be kell állítani):
 

sudo chmod a+rw /dev/ttyUSB0

Itt természetesen a ttyUSB0 eszközt helyettesítsük be a sajátunkkal.
Ezek után esz eszközhöz biztosan hozzáférünk.

Meg lehet próbálni még a saját felhasználónk hozzáadását az uucp csoporthoz, arch alapú disztrók esetén segíthet:

sudo gpasswd -a ${USER} uucp


----------------

Amennyiben részletes listát szeretnél az eszközeidről, itt egy script:

#!/bin/bash

for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
    (
        syspath="${sysdevpath%/dev}"
        devname="$(udevadm info -q name -p $syspath)"
        [[ "$devname" == "bus/"* ]] && continue
        eval "$(udevadm info -q property --export -p $syspath)"
        [[ -z "$ID_SERIAL" ]] && continue
        echo "/dev/$devname - $ID_SERIAL"
    )
done


-----------------

Ezek után jöhet a putty telepítése. Bizonyos disztrók esetén letölrhető a tárolókból de a hivatalos weboldalukon is elérhető. Ha ezzel megvagyunk, nincs más hátra, mint előre! Megadjuk a port beállításait és mehet a csatlakozás (vagy elmentjük az adatokat, egy későbbi csatlakozáshoz).