Automatické nahrání souboru na FTP

Automatické nahrání souboru na FTP
« kdy: 20. 07. 2020, 13:05:52 »
Ahoj,

snazim se napsat skript, ktery vezme csv soubory, ktere se vali na ramdisku, nahraje je na FTP a nasledne je z ramdisku smaze.

Na (FTP) serveru pak bezi asynchronni proces, ktery soubory zpracuje, zapise data do databaze na nasledne je smaze.

Napsal jsem k tomu nasledujici trivialni skript, ktery ma ale celkem zasadni nevyhodu, ze soubory maze bez ohledu na to, jestli se prenesly nebo ne.

FTP rozumim jako koza petrzeli, ale predpokladam, ze budu muset vyhodnocovat navratovy kod z rodiny 2xx. Poradite, ktery z nich mi rekne, ze se soubor korektne uploadoval?

Je mozne nejak vyhodocovat navratovy kod u MPUT, nebo to budu muset nahravat soubor po souboru?

Kdyz se nejaky soubor obcas ztrati, tak to neni zadna katastrofa, ale radeji bych, aby k tomu moc nedochazelo (takhle z dalky to vypada, ze bych mohl mit problem s tim, ze server bude cist soubor, ktery neni zcela zapsany, ale s tim se asi dokazu vyrovnat - poznam, ze neni kompletni)

Kód: [Vybrat]
#!/bin/bash
HOST='***'
USER='***'
PASSWD='***'
FILE=$1
BASENAME=${FILE##*/}

cd /dev/shm
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
binary
prompt
mput *.csv
quit
END_SCRIPT

rm *.csv

exit 0
« Poslední změna: 20. 07. 2020, 13:52:13 od Petr Krčmář »


Kit

  • *****
  • 707
    • Zobrazit profil
    • E-mail
Re:Automaticke nahrani souboru na FTP
« Odpověď #1 kdy: 20. 07. 2020, 13:30:44 »
Místo FTP bych raději zvolil HTTP(S), do kterého bych data poslal metodou POST, například programem curl.

Re:Automaticke nahrani souboru na FTP
« Odpověď #2 kdy: 20. 07. 2020, 13:37:58 »
FTP je bohuzel zatim dane a nemuzu ho v tuto chvili zmenit.

M_D

  • ****
  • 335
    • Zobrazit profil
    • E-mail
Re:Automaticke nahrani souboru na FTP
« Odpověď #3 kdy: 20. 07. 2020, 13:55:18 »
curl -ujmeno:heslo -T "*.csv" ftp://ftp.neco.xyz/upload/
Nebo ve smyčce nahrávat po jednom a pak jen kontrolovat návratový z curl...
Pokud cílový server umí i ftps, tak asi ani není připomínek. :-)

Re:Automatické nahrání souboru na FTP
« Odpověď #4 kdy: 20. 07. 2020, 15:40:57 »
Lze použít klienta lftp, který to jednak při neúspěšném pokusu zkouší znovu, a umí parametr "--Remove-source-files", který po úspěšném nahrání soubor smaže.
Manuál zde: https://linux.die.net/man/1/lftp.
Pro upload je třeba parametr "--reverse".


Medo77

  • ****
  • 300
    • Zobrazit profil
    • E-mail
Re:Automatické nahrání souboru na FTP
« Odpověď #5 kdy: 20. 07. 2020, 16:51:58 »
Mozes po put urobit get a lokalne si overit ci sa stiahnuty subor rovna s originalom. Ak nie, retry. Ak ano delete oboch.
Za urcitych okolnosti moze paradoxne nastat situacia, kedy je upload v poriadku ale download zlyha a bude sa to tvarit ako problem na strane servera, aj ked napr za to moze klient. (Zazil som).

Re:Automatické nahrání souboru na FTP
« Odpověď #6 kdy: 20. 07. 2020, 17:34:30 »
Diky za odpovedi, lftp se mi zatim libi moc, curl si necham v zaloze.

S tim stahovanim jsem o tom taky premyslel, ale tam trochu problem s tim, ze server ty soubory maze (takze mi to muze smazat pod rukama), asi by to nevadilo v nejhorsim by se soubor prenesl vicekrat (s tim si serverova aplikace poradi).