-
Tarin ja SSH:n käyttö pienten tiedostojen tehokkaaseen siirtoon
Tarin käyttäminen SSH:n yli monien tiedostojen siirtämiseen
SSH certificates are required to connect to Roihu over SSH
To connect to Roihu, users must sign their public key in MyCSC to obtain a time-based SSH certificate. Each certificate is valid for 24 hours, and once it expires, a new one must be generated by signing the public key again.
Linux-työkaluja, kuten scp ja rsync, käytetään yleisesti tiedostojen siirtämiseen
etäpalvelimen ja paikallisen koneen välillä. Nämä työkalut eivät kuitenkaan ole
kovin käytännöllisiä, kun siirretään paljon pieniä tiedostoja.
Yksinkertainen ja paljon nopeampi ratkaisu on kirjoittaa dataa sisältävä
(pakattu) tar-paketti suoraan kohdejärjestelmään. Tämä tehdään ohjaamalla
tar-komennon tuloste putken kautta ssh-yhteyden yli. Arkiston kirjoittaminen
suoraan kohteeseen auttaa myös säästämään levytilaa lähdejärjestelmässä.
Yleistä tietoa tarista on sivulla Pakkaus- ja pakkaustyökalut.
Esimerkkejä
Datan siirtäminen paikallisen tietokoneesi ja Puhdin välillä
Kaikki seuraavat komennot suoritetaan paikallisella työasemalla, jossa oletetaan
olevan tarvittavat työkalut (tar, ssh ja valinnaisesti gzip/bzip2)
asennettuina. Puhtia käytetään etäpalvelinesimerkkinä.
Yleinen syntaksi on:
Esimerkiksi komento, jolla kopioidaan hakemisto myfiles paikalliselta koneeltasi
hakemistoon /scratch/project_2001234 Puhdissa, on:
Huomaa
Jos olet tallentanut SSH-avaimesi tai varmennetiedostosi muulla kuin oletusnimellä
tai muuhun kuin oletussijaintiin (jonnekin muualle kuin ~/.ssh/id_<algorithm>
ja ~/.ssh/id_<algorithm>-cert.pub), sinun täytyy määrittää -i-valinnalla,
mistä ssh etsii tiedostoja, esimerkiksi:
tar c myfiles | ssh -i <path_to_private_key> -i <path_to_certificate> <username>@<host> 'cat > /scratch/project_2001234/myfiles.tar'
Tämän sivun loppuosa olettaa, että avain ja varmenne on tallennettu
oletussijaintiin tavanomaisilla nimillä, joten -i-lippu on jätetty pois. Huomaa,
että SSH-varmenteita vaaditaan vain Roihuun yhdistettäessä.
Purkaaksesi tar-arkiston samalla kertaa korvaa cat-komento seuraavasti:
Vastaavasti voit myös kopioida etäpalvelimella sijaitsevaa dataa paikalliselle koneellesi seuraavan kaltaisella komennolla:
ssh <username>@puhti.csc.fi 'tar c -C <parent_directory_on_puhti> <directory_to_transfer>' > <archive_on_local_machine>
Esimerkiksi komento, jolla kopioidaan kansio myfiles, joka sijaitsee hakemistossa
/scratch/project_2001234, paikalliselle koneellesi, on:
Purkaaksesi arkiston samalla kertaa:
Ota pakkaus käyttöön
Yllä olevissa komennoissa ei käytetty pakkausta. Korvaa tar c (tar x)
komennoilla tar cz tai tar cj (tar xz tai tar xj) ottaaksesi gzip- tai bzip2-pakkauksen
(purkamisen) käyttöön. Huomaa, että jotkin tiedostot eivät hyödy pakkauksesta
(esim. binaaritiedostot tai jo valmiiksi pakatut tiedostot), jolloin siirto on
nopeampaa ilman pakkausta.
Vältä laveaa tulostusta
v-valinnan lisääminen (esim. tar czv) tuottaa lavean tulostuksen eli listaa
käsitellyt tiedostot konsoliin. Tämä hidastaa siirtoprosessia, kun siirretään
paljon pieniä tiedostoja, joten sen käyttöä kannattaa välttää.
Datan siirtäminen suoraan CSC:n supertietokoneiden välillä
Jotta voit siirtää dataa suoraan CSC:n supertietokoneiden välillä, sinulla täytyy olla pääsy paikallisella työasemallasi määrittämiisi SSH-avaimiin, joita käytetään CSC:n supertietokoneille tunnistautumiseen. Roihua varten tarvitaan lisäksi voimassa oleva SSH-varmenne. Tämä toteutetaan välittämällä SSH-agenttisi supertietokoneelle, johon yhdistät ensin, mukaan lukien SSH-avaimesi (ja varmenteesi).
Tämän jälkeen dataa voidaan siirtää suoraan CSC:n supertietokoneiden välillä
käyttäen samaa syntaksia kuin yllä. Esimerkiksi komento, jolla siirretään hakemisto
/scratch/project_2001234/myfiles Puhdista vastaavaan sijaintiin Mahdissa, on:
tar c -C /scratch/project_2001234 myfiles | ssh <username>@mahti.csc.fi 'cat > /scratch/project_2001234/myfiles.tar'
Sama voidaan tehdä myös työskenneltäessä Mahdissa seuraavasti:
ssh <username>@puhti.csc.fi 'tar c -C /scratch/project_2001234 myfiles' > /scratch/project_2001234/myfiles.tar
Suorituskykyvertailu
Alla on karkea vertailu ajasta, joka kuluu hakemiston, jossa on paljon pieniä tiedostoja, siirtämiseen Puhtiin. Kukin tiedosto on kooltaan 100 KiB eikä pakkausta käytetä.
| Tiedostojen määrä | tar + ssh |
scp |
|---|---|---|
| 100 | 0.5 s | 2.4 s |
| 1000 | 1.3 s | 20.5 s |
| 10000 | 9.4 s | 201.2 s |