Egy olyan távoli szerverre kell fejlesztenem, aminek csak sftp és scp hozzáférése van, az rsync nem elérhető.
Mivel eddig mindig rsync-et használtam, próbáltam valami hasonlót keresni ilyen környezetre, de nem találtam. A legjobb, amit jelenleg meg tudok csinálni, hogy sshfs-sel felcsatlakoztatom a tárterületet, és erre már helyben mehet az rsync. De ez nehézkesebb is, lassabb is, nem is olyan szép.
Tudtok sftp/scp környeztre valami parancssoros közvetlen rsync szerű megoldást?
- 673 megtekintés
Hozzászólások
Annyit megpróbálhatsz, hogy a saját gépedről az rsync binárist felmásolod a távoli home-odba, és az rsync-nek megadod az --rsync-path=~/rsync
paramétert.
Elméletileg működik.
Bár ez sem elegáns... :)
---
"A megoldásra kell koncentrálni nem a problémára."
- A hozzászóláshoz be kell jelentkezni
A távoli géphez nincs shell szintű hozzáférés. Az sftp és scp kapcsolatot is a proftpd biztosítja chroot-olva. Sajnos nem tudja az rsync-et kezelni.
...
Közben felfogtam, hogy nem is kell shell hozzáférés. Felmásoltam, de egyelőre nem működik:
exec request failed on channel 0
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(235) [Receiver=3.1.2]
Gondolom, a chroot miatt.
- A hozzászóláshoz be kell jelentkezni
Végül is mondtam, hogy "elméletileg". :)
Valóban a chroot lehet az akadály...
Nem próbáltad megvesztegetni az üzemeltetőt? Hátha... :)
---
"A megoldásra kell koncentrálni nem a problémára."
- A hozzászóláshoz be kell jelentkezni
Fapados, de van az 'lftp': https://lftp.yar.ru/features.html
- A hozzászóláshoz be kell jelentkezni
+1
Van mirror
lehetőség is (példák pl. itt).
- A hozzászóláshoz be kell jelentkezni
Igen, közben én is kipróbáltam, és működik.
Fura a paraméterezése. Például, ha helyi gépen akarok szinkronizálni, akkor a -c, de ha távolin, akkor a -e után kell a parancsot megadnom. A parancs végi quit sem volt triviális nekem.
A publikus kulcsot is kezeli szépen, ha a -u felhasználóneve után a "," karaktert kiteszem.
Összességében tudja az alap dolgokat, egyelőre nekem ez tökéletes lesz, köszönöm!
Felszinkronizálás távoli szerverre:
lftp -e "mirror -R --delete --parallel=5 $LOCALDIR $REMOTEDIR; quit" -u $USERNAME, sftp://$HOST
Szinkronizálás helyi gépre:
lftp -e "mirror --delete --parallel=5 $REMOTEDIR $LOCALDIR; quit" -u $USERNAME, sftp://$HOST
Tudja még az --exclude paramétert is, én ezt még nem használom.
- A hozzászóláshoz be kell jelentkezni
Esetleg praktikus lehet egy "szkriptfájl", amiben az lftp
-parancsok vannak, ui. a cat lftpparancsok | lftp
működik.
- A hozzászóláshoz be kell jelentkezni
Igen, valószínűleg ez esetben a quit is természetesebb lett volna nekem is.
- A hozzászóláshoz be kell jelentkezni
Hm, abban a két lftp-szkriptben, amit használok, nincs quit
- de vakuljak meg, a man lftp-ben nem is találok ilyen parancsot.
- A hozzászóláshoz be kell jelentkezni
Gondolom azért, mert az egy standard ftp parancs. De lehet, hogy az EOF automatán meg is szakítja az ftp folyamatot, és akkor a scriptbe nem is kell.
- A hozzászóláshoz be kell jelentkezni
Az is lehet. Viszont:
ftp:use-quit (boolean)
if true, lftp sends QUIT before disconnecting from ftp server. Default is true.
- A hozzászóláshoz be kell jelentkezni