-
Tarin ja SSH:n käyttö pienten tiedostojen tehokkaaseen siirtoon
Tarin käyttäminen SSH:n yli monien tiedostojen siirtämiseen
SSH keys are required to connect to Puhti and Mahti over SSH
Since April 14th 2025, connecting to Puhti and Mahti over SSH only works
using SSH keys added in MyCSC. Password authentication and public keys
stored in users' personal ~/.ssh/authorized_keys file on the
supercomputer no longer works.
Read the detailed instructions on setting up and using SSH keys.
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ä.
Yleisiä tietoja tarista löydät kohdasta 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-avaintiedostosi muulla kuin oletusnimellä tai muuhun
kuin oletussijaintiin (eli muualle kuin ~/.ssh/id_<algorithm>), sinun on
määritettävä, mistä ssh etsii avainta käyttämällä -i-valitsinta, esimerkiksi:
tar c myfiles | ssh -i <path_to_private_key> <username>@puhti.csc.fi 'cat > /scratch/project_2001234/myfiles.tar'
Tämän sivun loppuosassa oletetaan, että avain on tallennettu oletussijaintiin
vakiomuotoisella nimellä, joten -i-valitsin on jätetty pois.
Jos haluat purkaa tar-arkiston samalla kertaa, korvaa cat-komento seuraavasti:
Vastaavasti voit myös kopioida etäpalvelimella sijaitsevaa dataa paikalliselle koneellesi 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:
Jos haluat purkaa 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), jos haluat ottaa
gzip- tai bzip2-pakkauksen (purkamisen) käyttöön. Huomaa, että jotkin tiedostot
eivät hyödy pakkauksesta (esimerkiksi binaaritiedostot tai jo valmiiksi pakatut
tiedostot), jolloin siirto on nopeampaa ilman pakkausta.
Vältä laveaa tulostusta
v-valitsimen lisääminen (esimerkiksi tar czv) tuottaa lavean tulostuksen,
eli käsiteltävät tiedostot listataan 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 on oltava pääsy niihin SSH-avaimiin, jotka olet määrittänyt paikallisella työasemallasi CSC:n supertietokoneisiin tunnistautumista varten. Tämä tehdään välittämällä SSH-agenttisi siihen supertietokoneeseen, johon muodostat yhteyden ensin.
Tämän jälkeen dataa voidaan siirtää suoraan CSC:n supertietokoneiden välillä
käyttämällä 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. Kunkin tiedoston koko on 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 |