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

147

    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. Janne Ahonen E R O A A

      Taas 2 lasta jää vaille ehjää perhettä!
      Kotimaiset julkkisjuorut
      204
      4018
    2. Tekisi niin mieli laittaa sulle viestiä

      En vaan ole varma ollaanko siihen vielä valmiita, vaikka halua löytyykin täältä suunnalta, ja ikävää, ja kaikkea muuta m
      Ikävä
      92
      1916
    3. Miksi ihmeessä?

      Erika Vikman diskattiin, ei osallistu Euroviisuihin – tilalle Gettomasa ja paluun tekevä Cheek
      Ateismi
      30
      1602
    4. Ootko huomannut miten

      pursuat joka puolelta. Sille joka luulee itsestään liikoja 🫵🙋🏻‍♂️
      Ikävä
      165
      1402
    5. Erika Vikman diskattiin, tilalle Gettomasa ja paluun tekevä Cheek

      Erika Vikman diskattiin, ei osallistu Euroviisuihin – tilalle Gettomasa ja paluun tekevä Cheek https://www.rumba.fi/uut
      Maailman menoa
      25
      1296
    6. Pitääkö penkeillä hypätä Martina?

      Eivätkö puistonpenkit ole istumista varten.Ei niitä kannata liata hyppäämällä koskaa likaantuvat eikä siellä kukaan niit
      Kotimaiset julkkisjuorut
      212
      1150
    7. Kerropa ESA miten kävi tuomioiden

      Osaako ESA kertoa miten haukkumasi kunnanhallituksen kävi.
      Puolanka
      39
      1142
    8. Kuinka kauan

      Olet ollut kaivattuusi ihastunut/rakastunut? Tajusitko tunteesi heti, vai syventyivätkö ne hitaasti?
      Ikävä
      94
      1119
    9. Maikkarin tentti: Orpo jälleen rauhallinen ja erittäin hyvä, myös Purra oli hyvä

      Lindtman ja Kaikkonen oli kohtalaisia, sen sijaan punavihreät Koskela ja Virta olivat taas heikkoja. Ja vastustavat jalk
      Maailman menoa
      129
      1093
    10. Milli-helenalla ongelmia

      Suomen virkavallan kanssa. Eipä ole ihme kun on etsintäkuullutettu jenkkilässäkin. Vähiin käy oleskelupaikat virottarell
      Kotimaiset julkkisjuorut
      198
      1034
    Aihe