rsync távoli hostra scriptből

Fórumok

sziasztok!

adva van egy köynvtárstruktúra, ami 2-3, nem egymásban levő mappáját kéne távoli gépre syncronizálni scriptből. a script megvalósításában van egy kérdés, amire elegáns és valamennyire biztonságos megoldást szeretnék, de kényelmes megoldással nem tudtam. kiindulva abból, hogy a triviális megoldás néha nem jut az ember eszébe, ezért kérdezek itt, hátha.

a sync eszköz rsync lenne (alternatív megoldás is jöhet, funkciójában legyen egyenértékű persze).

- több mappa és file szinkronizálása nem egy targetbe ömlesztve (/a és /b mappa a célhelyen legyen pl. /sync/a és /sync/b mappában).
- nem tárolt azonosítással (tehát bekért azonosítóval/jelszóval), de csak 1x a futtatás elején

a gond az, hogyha két rsync van a scriptben, akkor azonos host esetén is 2x kell gépelni (ez a kisebb baj, bár kényelmetlen), ráadásul mivel nem háttérben futtatott, cron/stb megoldásról van szó, ezért ismeretlen idő telik el a következő input-ig. van erre a problémára valami értelmes megoldás, ami nem plain text, eltárolt jelszót feltételez? tehát nem akarok a scriptbe jelszót írni, csak max felhasználónevet. valamiért azt gondolom, hogy a readline szerű megoldás nem annyira nyerő, de javítsatok ki, ha tévednék, persze indoklással :)

a script elvi formája tehát valami efféle

valami
valami
valami
rsync valamit user@host:/a
valami
valami
rsync valamit user@host:/b
akármi
valami
stb

egy ilyen feladatra mi a nem nagyon hülye megoldás szerintetek?

Hozzászólások

technikai user + privát/publikus kulcsok használata?

--
A gyors gondolat többet ér, mint a gyors mozdulat.

rsync over ssh, minek jobban komplikalni?
---
"Már nem csak tehetségekből, de a hülyékből is kifogytunk..."

rsync over ssh, es ssh-agent, custom, jelszoval vedett kulccsal.

A script elejen elinditod az ssh-agent-et, hozzaadod a kulcsot, aztan rsync. A cucc vegen (illetve hiba esten) pedig ssh-agent -k, es leallitod. Ennek egy egyszerubb modja, hogy feltetelezed, fut az ssh-agent (ill ha nem, inditasz egyet, es nem allitod le), es hozzaadod a kulcsot az elejen, a vegen meg removeolod.

ssh-agent(1) es ssh-add(1) man oldalak tudnak sokat segiteni.

A fenti eredmenye, hogy ssh-add -nal kerni fogja a jelszot, amit nem kell a scriptben tarolni. Maskor nem fogja, max ha lejar, de azt meg add-nal foreverre tudod allitani (ami egyebkent a default, hacsak nem lett az ssh-agent maskepp inditva).

--
|8]

echo "kerem a jelszot"
read jelszo
export RSYNC_PASSWORD=$jelszo
...
rsync -arzv /innen1 rsync://server/ide
rsync -arzv /innen2 rsync://server/amoda

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

csak az adott user fer hozza

biztonsági résnek érzed hogy egy user vissza tudja olvasni azt a jelszót, amit nemrég ő gépelt be?
ha előre meg akarod adni hogy az rsync később felhasználhassa, valahol tárolni kell. még jó hogy elfogadja env-ből, amit csak a user tud kiolvasni (és nem parancs argumentumban kell megadni).

vagy párhuzamosítod, hogy egyszerre induljon minden rsync, közel egy időben kérik a jelszót, aztán ha beindultak, le lehet pause-olni egyen kívül a többit - itt persze külön terminálban kéne indítani és lehet h a megállított rsync-ek eltájmáutolnak... :)

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack

Ezt érdemes megnézni rsync helyett: http://www.cis.upenn.edu/~bcpierce/unison/
Amiért én váltottam: Tud 2 irányú sync-et és olyan módja is van ami figyeli az fs változásokat és egyből küldi a módosításokat.
Szerintem ezekkel a paraméterekkel működnie kéne amit te akarsz:

ignore = Path *
ignorenot = Path dir1
ignorenot = Path dir2