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

98

    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. Taasko se show alkaa

      Koo osottaa taas mieltään
      Ikävä
      23
      1615
    2. Miksi ihmeessä nainen seurustelit kanssani joskus

      Olin ruma silloin ja nykyisin vielä rumempi En voi kuin miettiä että miksi Olitko vain rikki edellisestä suhteesta ja ha
      Ikävä
      16
      1459
    3. Minun oma kaivattuni

      Ei ole mikään ilkeä kiusaajatyyppi, vaan sivistynyt ja fiksu sekä ystävällinen ihminen, ja arvostan häntä suuresti. Raka
      Ikävä
      63
      1358
    4. Persut nimittivät kummeli-hahmon valtiosihteeriksi!

      Persujen riveistä löytyi taas uusi törkyturpa valtiosihteeriksi! Jutun perusteella järjenjuoksu on kuin sketsihahmolla.
      Perussuomalaiset
      32
      1340
    5. Onko ministeri Juuso epäkelpo ministerin tehtäviensä hoitamiseen?

      Eikö hänellä ole kompetenttia hoitaa sosiaali- ja terveysministetin toimialalle kuuluvia ministerin tehtäviä?
      Perussuomalaiset
      41
      1283
    6. Pelastakaa Lapset: Netti ei ole turvallinen paikka lapsille - Erätauko-tilaisuus to 25.4.2024

      Netti ei ole turvallinen paikka lapsille, mutta mitä asialle voi vanhempana tehdä? Torstaina 25.4.2024 keskustellaan ne
      Suomi24 Blogi ★
      15
      1228
    7. Sakarjan kirjan 6. luku

      Jolla korva on, se kuulkoon. Sain profetian 22.4.2023. Sen sisältö oli seuraava: Suomeen tulee nälänhätä niin, että se
      Profetiat
      8
      1126
    8. Tervehdys!

      Sä voit poistaa nää kaikki, mut mä kysyn silti A:lta sen kokemuksia sun käytöksestä eron jälkeen. Btw, miks haluut sabot
      Turku
      64
      1116
    9. Elia tulee vielä

      Johannes Kastaja oli Elia, mutta Jeesus sanoi, että Elia tulee vielä. Malakian kirjan profetia Eliasta toteutuu kokonaan
      Helluntailaisuus
      35
      1104
    10. Nellietä Emmaa ja Amandaa stressaa

      Ukkii minnuu Emmaa ja Amandaa stressaa ihan sikana joten voidaanko me koko kolmikko hypätä ukin kainaloon ja syleilyyn k
      Isovanhempien jutut
      6
      1092
    Aihe