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

181

    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. Rakas

      Eihän se tietysti minulle kuulu, mutta missä sinä olet? 😠
      Ikävä
      54
      2908
    2. Pidit itseäsi liian

      Vanhana minulle? Niinkö?
      Ikävä
      61
      2751
    3. SDP:n lyhyt selviytymisopas

      1. Komitea on vastaus, oli kysymys mikä tahansa Jos maailma on muuttumassa tai jossain palaa, demari ei hätiköi. Ensin p
      Maailman menoa
      41
      2284
    4. Kiva kun SDP alkaa hallitsemaan Suomea

      Vanhat hyvät ajat taas palaavat ja kansa vaurastuu. Muistatteko vielä Sorsan aikakauden? Silloin Suomessa tehtiin jopa
      Maailman menoa
      40
      2072
    5. Joko olet luovuttanut

      Mun suhteen?
      Ikävä
      63
      2047
    6. Haluaisitko oikeasti

      Vakavampaa välillemme vai tämäkö riittää
      Ikävä
      55
      1995
    7. Mitä se olisi

      Jos sinä mies saisit sanoa kaivatullesi mitä vain juuri nyt. Ilman mitään seuraamuksia yms. Niin mitä sanoisit?
      Ikävä
      41
      975
    8. Toivoisitko

      Toivoisitko, että kaivattusi olisi introvertimpi tai extrovertimpi? Itsenäinen tai tarvitsisi enemmän apua/sinua? Osoit
      Ikävä
      113
      904
    9. Nanna Karalahti :Paljastus bisneksistä Jere Karalahden kanssa!

      Ottanut yhteyttä seiskalehden toimittajaan ja kertonut totuuden yhteisestä Herotreeni-nimisestä verkkovalmenuksesta.
      Kotimaiset julkkisjuorut
      123
      869
    10. Sotekeskus

      Aloite on hyvä, kiitokset siitä. Mutta jos olette yhtään seuranneet hyvinvointialueen kokouksia niin sehän on jo nuijit
      Ähtäri
      37
      854
    Aihe