Tiedostojen siirto: SFTP, FTPS, SCP, muu?

tiedostot_koneelle_B

Tarkoitus olisi siirtää salattua yhteyttä käyttäen useita tiedostoja koneelta A koneelle B (eivät ole samassa paikassa, vaan internet -yhteys välissä).

huom: Kone A on OMAN palomuurin takana, joten ko. palomuuriin voi asettaa portin uudelleenohjaussääntöjä, tyyliin:

Internetistä tuleva yhteydenotto porttiin 65534 uudelleenohjataan sisäverkon koneelle 192.168.0.254 porttiin 2001.

huom: kone B on OPERAATTORIN ohjaaman palomuurin takana, joten ko. palomuuriin EI voi asettaa mitään porttisääntöjä. Eli siis kone B ei voi vastaanottaa internetin kautta tulevia TCP tai UDP -yhteyksiä, mutta se voi toki itse avata niitä.

Käyttöjärjestelmät:

Kone A: Windows (mahdollisuus tehdä omia ohjelmia, todennäköisesti vanha windows -versio, mutta toisaalta kone on palomuurin takana, joten ulkoapäin vaikea hyökätä, kun palomuuri päästää läpi vain sen, mitä se on nimenomaisesti sallittu päästämään läpi ja estää kaikki muut ulkoa tulevat pyynnöt).

Kone B: Linux

Perusidea:

esimerkiksi:

http://10.0.0.1/listaus.txt

tämä antaa listan esim. 50 viimeisestä tiedostonimestä, 1 nimi per rivi.

esim:

*http://10.0.0.1/data1/file_0001.dat

http://10.0.0.1/data1/file_0002.dat

http://10.0.0.1/data1/file_0003.dat

http://10.0.0.1/data1/file_0007.dat

http://10.0.0.1/data1/file_0008.dat

ideana se, että kone B noutaisi määrävälein tiedoston listaus.txt, ja sen jälkeen noutaisi kaikki ne tiedostot, jotka on mainittu tiedostossa listaus.txt JA joita se ei ole jo aiemmin noutanut.

JOS rivi alkaa tähdellä, tämä kertoo, että ko. tiedosto on olemassa, mutta siihen tulee vielä lisää dataa.

Siirto olisi hyvä aloitta heti, mutta siis tässä tapauksessa (jos tulee lisää dataa) niin tiedoston koko ei ole tiedossa siirron alkaessa.

Tiedoston jo olemassaoleva data EI muutu, mutta siis muodostumassa olevan tiedoston loppuun tulee lisää dataa aina siihen asti kunnes ko. tiedoston lopullinen sisältö on jo valmis.

EN halua tehdä koneelle A sellaista järjestelyä, jossa esim.

UUSIN.dat olisi uudelleenohjattu aina uusimpaan tiedostoon.
Tämä on huonoa suunnittelua, koska siinä voi syntyä riski siitä, että jos tuon uusimman tiedoston lataus keskeytyy, niin sitä "jatkettaessa" voidaan vahingossa "jatkaa" kokonaan eri tiedostosta, mutta tuo uudelleenohjaus nimestä UUSIN.dat peittäisi tämänkaltaisen loogisen virheen järjestelmän suunnittelussa.

Sujuisikohan tuon linux -koneen B toiminto jollain suht. yksinkertaisella skriptillä? (esim. ns. BASH skripti) ?

Koneelle A tulisi muutenkin omatekoinen ohjelma, koska dataa hieman esikäsitellään ennen sen kirjoittamista tiedostoon.

Yksi vaihtoehto olisi salata tieto jo omassa ohjelmassa, tällöin voisi yhtä hyvin käyttää salaamatonta protokollaa netissä.

3

100

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Hanki kolmas kone C virtuaalipalvelimena ja tiedoston lähetykseen sinne HTTPS. Sehän voi uudelleennimetä sen sitten automaatisesti.

      Sitten kone B ottaa yhteyden koneeseen C ja noukkii tiedostot sieltä.

      • tiedostot_koneelle_B

        "Sehän voi uudelleennimetä sen sitten automaatisesti."

        Niin, siis EI ole tarvetta uudelleennimetä mitään.

        Esitin tuossa idean, että UUSIN.dat olisi uudelleenohjaus uusimpaan, mutta totesin jo kysymyksessä idean huonoksi, koska jos tiedoston lataus keskeytyy, niin syntyy riski "jatkaa" väärän tiedoston lataamista, jolloin syntyy tiedosto, jossa alku- ja loppuosa olisivat peräisin ERI tiedostosta !

        Mikä yleensäkin olisi lisähyöty koneesta C ?

        Kun siis koneelta B voi jo nyt ottaa yhteyden koneelle A ja ladata sieltä tiedoston.

        Ainoa mutkistava tekijä on se, että miten esim. linuxin WGET suhtautuu tilanteeseen, jossa lähdetiedoston koko suurenee latauksen aikana ?

        Lähdetiedoston alkuperäinen data EI siis tässäkään tapauksessa muutu, mutta jos WGET aloittaa siirron tarkistamalla lähdetiedoston koon ja muistamalla sen latauksen aikana, niin tällöinhän se lataisi vain alkuperäistä kokoa vastaavan osan, vaikka tiedoston koko kasvaisi latauksen aikana.

        Voiko WGET:ille kertoa jollain parametrillä, että lähdetiedosto voi kasvaa latauksen aikana, ja WGETin halutaan silti hakevan koko tiedosto?

        huom: vain 1 tiedosto kerrallaan voi kasvaa.

        esimerkki:

        1. tiedosto file5.dat luodaan

        2. tiedoston file5.dat koko alkaa kasvaa, kunnes...

        3. tiedosto file5.dat on lopullisessa koossaan, jolloin sen kasvaminen päättyy, eikä se enää ala kasvaa uudelleen.

        Heti, kun tiedosto file5.dat on lopullisessa koossaan, sitä kirjoittava ohjelma sulkee tiedoston file5.dat, eikä enää avaa sitä uudelleen,

        vaan samalla hetkellä kun file5.dat on lopullisessa koossaan, niin ohjelma luo tiedoston file6.dat, ja nyt vuorostaan file6.dat alkaa kasvaa, aivan kuten kohdassa 2 mutta eri tiedostonimi.

        Olisi huomattavaa etua kokonaisuuden kannalta, jos tiedoston lataaminen aloitetaan heti sen muodostumisen jälkeen, eikä odoteta tiedoston sitä, että tiedosto olisi jo kasvanut lopulliseen kokoonsa.

        Mutta nuo nimet eivät ole pääteltäviä kuten file5.dat, file6.dat jne.

        Eli pitäisi olla erikseen joku "listaus.dat" jossa on muiden tiedostojen nimet ja esim. tähti nimen edessä, JOS tiedosto on vielä kasvamisvaiheessa.

        Tuon listaus.dat:in tarkka formaatti on itse valittavissa, ja JOS vastaanottopää käyttää linuxin WGET -komentoa, niin formaatti kannattaisi olla sellainen, jota saa helposti wget:in hyödyntämään.


      • tiedostot_koneelle_B kirjoitti:

        "Sehän voi uudelleennimetä sen sitten automaatisesti."

        Niin, siis EI ole tarvetta uudelleennimetä mitään.

        Esitin tuossa idean, että UUSIN.dat olisi uudelleenohjaus uusimpaan, mutta totesin jo kysymyksessä idean huonoksi, koska jos tiedoston lataus keskeytyy, niin syntyy riski "jatkaa" väärän tiedoston lataamista, jolloin syntyy tiedosto, jossa alku- ja loppuosa olisivat peräisin ERI tiedostosta !

        Mikä yleensäkin olisi lisähyöty koneesta C ?

        Kun siis koneelta B voi jo nyt ottaa yhteyden koneelle A ja ladata sieltä tiedoston.

        Ainoa mutkistava tekijä on se, että miten esim. linuxin WGET suhtautuu tilanteeseen, jossa lähdetiedoston koko suurenee latauksen aikana ?

        Lähdetiedoston alkuperäinen data EI siis tässäkään tapauksessa muutu, mutta jos WGET aloittaa siirron tarkistamalla lähdetiedoston koon ja muistamalla sen latauksen aikana, niin tällöinhän se lataisi vain alkuperäistä kokoa vastaavan osan, vaikka tiedoston koko kasvaisi latauksen aikana.

        Voiko WGET:ille kertoa jollain parametrillä, että lähdetiedosto voi kasvaa latauksen aikana, ja WGETin halutaan silti hakevan koko tiedosto?

        huom: vain 1 tiedosto kerrallaan voi kasvaa.

        esimerkki:

        1. tiedosto file5.dat luodaan

        2. tiedoston file5.dat koko alkaa kasvaa, kunnes...

        3. tiedosto file5.dat on lopullisessa koossaan, jolloin sen kasvaminen päättyy, eikä se enää ala kasvaa uudelleen.

        Heti, kun tiedosto file5.dat on lopullisessa koossaan, sitä kirjoittava ohjelma sulkee tiedoston file5.dat, eikä enää avaa sitä uudelleen,

        vaan samalla hetkellä kun file5.dat on lopullisessa koossaan, niin ohjelma luo tiedoston file6.dat, ja nyt vuorostaan file6.dat alkaa kasvaa, aivan kuten kohdassa 2 mutta eri tiedostonimi.

        Olisi huomattavaa etua kokonaisuuden kannalta, jos tiedoston lataaminen aloitetaan heti sen muodostumisen jälkeen, eikä odoteta tiedoston sitä, että tiedosto olisi jo kasvanut lopulliseen kokoonsa.

        Mutta nuo nimet eivät ole pääteltäviä kuten file5.dat, file6.dat jne.

        Eli pitäisi olla erikseen joku "listaus.dat" jossa on muiden tiedostojen nimet ja esim. tähti nimen edessä, JOS tiedosto on vielä kasvamisvaiheessa.

        Tuon listaus.dat:in tarkka formaatti on itse valittavissa, ja JOS vastaanottopää käyttää linuxin WGET -komentoa, niin formaatti kannattaisi olla sellainen, jota saa helposti wget:in hyödyntämään.

        Mahdollisesti väärinymmärrys minulla.

        "Mikä yleensäkin olisi lisähyöty koneesta C ?"

        Ajattelin niin, että ei tarvitse miettiä mitään monimutkaisempaa ohjelmointia ja pollata onko tiedostoja tullut vaan kone A voi muodostaa sinne yhteyden ja lähettää tiedoston kun se valmistuu tai lähettää sitä dataa jatkuvasti pätkä kerrallaan.

        Mutta, nyt on kyllä ihan pakko hieman pakittaa tässä hieman, sillä vaikuttaa vahvasti siltä että tässä nyt yritetään tehdä jotain väärin. Ongelmaa tulee siitä, että jossain muualla tehdään väärin ja tässä ratkotaan asiaa jotenkin monimutkaisesti.

        1. Mitä se siirrettävä data on?
        2. Windows kone A, mikä sen tarkoitus on ja missä sijaitsee
        3. Kone B, mikä on sen tarkoitus ja missä sijaitsee
        4. Mitä muita palvelimia on kokonaisuudessa?

        Sitä kaikkea monimutkaisuutta pitäisi välttää ja kokonaisuus mallintaa palvelupohjaisesti. Eli olisi sellaisia palveluja jotka sisältää yhtenäisen rajapinnan ja jokainen palvelu pitää sisällään oman datansa ja lisäksi kopioivat itseensä dataa muista palveluista cacheen jos tarvitsevat niiden dataa. Palvelut sitten sellaisia, että niihin voidaan ottaa yhteys ilman rajoitteita.

        Siksi tuollainen kolmas kone C vaikutti luontevalta ratkaisulta, että tekee siitä sen palvelun mihin data lähetetään ja mistä sitä voi lukea kun sitä tarvitaan.

        Jättäisin tuon wget puljaamisen keskeneräisten tiedostojen kanssa tekemättä. Tuollaista on vaikea saada luotettavaksi.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Voitasko leikkiä jotain tunnisteleikkiä?

      Tietäisi ketä täällä käy kaipaamassa.. kerro jotain mikä liittyy sinuun ja häneen eikä muut tiedä. Vastaan itsekin kohta
      Ikävä
      80
      1847
    2. Tietysti jokainen ansaitsee

      Hän varmasti ansaitsee vain parasta ja sopivinta tietenkin, suon sen onnen hänelle enemmän kuin mielelläni. Aika on nyt
      Ikävä
      18
      1699
    3. Millä voin

      Hyvittää kaiken?
      Ikävä
      17
      1543
    4. 50+ naiset kyl

      Lemottaa sillille mut myös niitte kaka lemottaa pahlle ku kävin naiste veskis nuuhiin
      Ikävä
      19
      1243
    5. En voi sille mitään

      Tulen niin pahalle tuulelle tästä paikasta nykyisin. Nähnyt ja lukenut jo kaiken ja teidän juttu on samaa illasta toisee
      Ikävä
      12
      1204
    6. Välitän sinusta mies

      Kaikki mitä yritin kertoa tänään ei mennyt ihan putkeen..Joka jäi jälkeenpäin ajateltuna suoraan sanottuna harmittaa aiv
      Työpaikkaromanssit
      6
      1202
    7. hieman diabetes...

      Kävin eilen kaverin kanssa keskusapteekissa kun on muutama kuukausi sitten tullut suomesta ja oli diabetes insuliinit lo
      Pattaya
      12
      1166
    8. Annetaanko olla vaan

      Siinä se, tavallaan kysymys ja toteamuskin. Niin turhaa, niin rikkovaa. On niin äärettömän tärkeä, ja rakas olo.. N
      Ikävä
      29
      1141
    9. Miten joku voi käyttää koko elämänsä

      siihen että nostelee täällä vanhoja ketjuja ja troIIaa niihin jotain linkkiä mitä kukaan ei avaa? Ihmisellä ei ole mitää
      Tunteet
      8
      1139
    10. Pakkoruotsi on leikkikieli, jota ei ole tarkoituskaan osata

      Pakkoruotsi on leikkikieli. Ennen leikkikieltä sanottiin siansaksaksi, sitten keksittiin tilalle pakkoruotsi. Pakkoruot
      Kielipolitiikka
      7
      1124
    Aihe