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

157

    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. Ootko nainen noin mustis musta

      Onhan se toki imartelevaa kun olet kaunis ja kaikkea muutakin, mutta ehkä vähän kummallista, kun ei varsinaisesti olla t
      Ikävä
      84
      6895
    2. Sen kerran kun siellä käyn

      Voisit olla paikalla💚💛☘️
      Ikävä
      35
      3691
    3. Kumpa tietäisin. Miehelle.

      Vieläkö toivot jotain viestiä, vai suutuitko taas...kun...🤔
      Ikävä
      44
      3248
    4. Kauan säkin jaksoit

      Minun perässä juosta. Kunnes pahoitit mielen. Kuinka monta anteeksipyyntöä olet vailla? 🧐
      Ikävä
      40
      2462
    5. Joel Harkimo ja Janni Hussi eroavat

      Tämä on ilon päivä 😊
      Kotimaiset julkkisjuorut
      203
      2182
    6. Sä olet nainen kuuluisa..

      ..etkä mitenkään hyvällä tavalla.
      Suhteet
      120
      2153
    7. Miksi kaipaat

      Ja olet elämässäni vielä kaiken tämän jälkeen? Eikö kaikki ole jo selvää välillämme?
      Ikävä
      29
      2079
    8. rakastan sinua!

      Tule ja ota, kasvetaan yhdessä paremmiksi ❤️❤️❤️❤️ kaikki anteeksi ❤️❤️❤️
      Ikävä
      40
      2072
    9. Mietin tässä T....

      Oletko jo kesälomalla.?Keli on ihanaa, ja sinä nautit veneilystä.... Edelleen käyt mielessä.... En ole unohtanut sinua..
      Suhteet
      24
      1778
    10. Askanmäessä Huippu esitys

      Kävimme Ystävien kanssa Askanmäen kesäteatterissa. Kaikki tykättiin esityksestä aivan valtavasti. En varmaan koko vuonna
      Puolanka
      18
      1654
    Aihe