Ohje Allaksen käyttöön CSC:n supertietokoneilla
CSC:n supertietokoneet Puhti ja Mahti eivät tarjoa pysyvää tallennustilaa tutkimusdatalle. Supertietokoneen omassa tallennuksessa on käytäntö, jonka mukaan käyttämätön data poistetaan, joten data on siirrettävä laskennan jälkeen Altaaseen.
Data, jota täytyy säilyttää pidempään kuin vain muutaman viikon ajan, kannattaa kopioida Allas-objektitallennuspalveluun. Allas tarjoaa alustan, jolla voit säilyttää dataasi niin kauan kuin CSC-projektisi on aktiivinen. Tallennuksen lisäksi Allasta voidaan käyttää datan siirtämiseen eri palvelimien välillä ja datan jakamiseen muiden käyttäjien kanssa.
Yksi Allaksen tärkeimmistä käyttötapauksista on datan säilyttäminen silloin, kun sitä ei käytetä aktiivisesti CSC:n supertietokoneilla. Kun aloitat työskentelyn, tuot datan Allaksesta käyttöön. Ja kun dataa ei enää käytetä aktiivisesti, se voidaan siirtää takaisin Altaaseen.
Jos et ole käyttänyt Allasta aiemmin, aloita lukemalla Allaksen yleisesittely, joka sisältää paljon tärkeitä asioita.
Lisätietoa aiheista:
Datan lataamiseen palveluun tai lataamiseen Allaksesta supertietokoneiden ja Allaksen välillä on paljon erilaisia työkaluja. Voit käyttää Puhdin tai Mahdin selainkäyttöliittymää, komentorivityökaluja tai Python-, R- tai muita työkaluja. Puhdissa ja Mahdissa Allaksen komentorivityökalut ovat CSC:n asentamia ja saatavilla allas-moduulin kautta.
Oletuksena CSC:n laskentaprojekteilla ei ole pääsyä Allakseen. Projektin johtajan täytyy hakea Allas-palvelua erikseen MyCSC:ssä. Allaksen esittelysivulla kerrotaan, miten tämä tehdään, sekä oletuskiintiöistä ja lisätallennustilan hakemisesta.
Esimerkit
Tämä ohje sisältää neljä esimerkkiä Allaksen käytöstä Puhdissa ja Mahdissa. Esimerkit perustuvat interaktiivisesti suoritettuihin komentoihin, joten esimerkit 1, 2 ja 4 soveltuvat vain suhteellisen pienille aineistoille (enintään joitakin satoja gigatavuja). Kolmas esimerkki sopii myös suuremmille aineistoille.
- Ensimmäisessä esimerkissä käytetään
a-komentoja (
a-put,a-get) datan lataamiseen palveluun Mahdista Altaaseen ja sen jälkeen datan lataamiseen Allaksesta Puhtiin. - Toisessa esimerkissä siirretään sama data käyttäen Rclonea.
- Kolmas esimerkki keskittyy suurten tiedostojen lataamiseen palveluun Allakseen.
- Neljäs esimerkki käsittelee tapausta, jossa kopioitava aineisto sisältää suuren määrän tiedostoja.
a-komennot soveltuvat paremmin tilanteisiin, joissa dataa käytetään pääasiassa CSC:n laskentaympäristössä (Puhti, Mahti). Toinen vaihtoehto, Rclone, sopii hyvin tilanteisiin, joissa dataa käytetään myös CSC:n ulkopuolella.
Esimerkki 1: Allaksen käyttö a-komennoilla
A. Datan lataaminen palveluun Mahdista Altaaseen
a-komennot ovat Allas-kohtaisia työkaluja, joiden avulla Allaksen käyttö on helppo aloittaa. a-komennot arkistoivat ja siirtävät dataa automaattisesti. Voit myös pakata datan ennen tallennusta. Esimerkiksi tekstimuotoisessa datassa pakkaus vähentää tarvittavaa tallennustilaa, mutta toisaalta hidastaa siirtoprosessia hieman. a-komennot ovat hyvä vaihtoehto monenlaiselle datalle, jota käytetään enimmäkseen CSC-ympäristössä.
Tässä esimerkissä meillä on alihakemisto genomes/zebrafish projektin scratch-hakemistossa
Mahdissa (/scratch/project_2001659). Hakemisto zebrafish
sisältää alla luetellut kahdeksan tiedostoa:
[kkayttaj@mahti-login11 ~]$ ls /scratch/project_2001659/genomes/zebrafish
Danio_rerio.GRCz10.91.1.bt2 Danio_rerio.GRCz10.91.2.bt2
Danio_rerio.GRCz10.91.3.bt2 Danio_rerio.GRCz10.91.4.bt2
Danio_rerio.GRCz10.91.rev.1.bt2 Danio_rerio.GRCz10.91.rev.2.bt2
Danio_rerio.GRCz10.fa Danio_rerio.GRCz10.fa.fai
Kopioidaksemme tämän hakemiston sisällön Altaaseen asetamme ensin Allas-ympäristön:
Sen jälkeen avaamme yhteyden Allakseen komennolla allas-conf. Komento
pyytää käyttäjän CSC-salasanaa ja listaa sitten käytettävissä olevat Allas-projektit.
Tässä tapauksessa valitsemme project_2001659.
[kkayttaj@mahti-login11 ~]$ allas-conf
Mode swift
Please enter CSC password for account kkayttaj: <password>
Checking projects available for your account.
Please wait.
1) project_2000982 2) project_2001659 3) project_2000136 4) abort allas_conf
Please choose a project by giving an item number from the list above: 2
Configuration will be done for project: project_2001659
Protocols:
swift
Connection stays active for eight hours.
allas-conf avaa yhteyden määritettyyn Allas-projektiin kahdeksaksi tunniksi.
Jos haluamme alkaa käyttää toista projektia, meidän täytyy suorittaa allas-conf uudelleen.
Yhdessä shell-istunnossa allas-conf sallii kuitenkin vain yhden Allas-projektin
olla aktiivisena kerrallaan. Huomaa, että tietyt työkalut, esimerkiksi rclone, voidaan
silti määrittää käyttämään useita Allas-projekteja samanaikaisesti.
Seuraavaksi siirrymme zebrafish-hakemistoon:
Voimme nyt ladata tiedostoja palveluun yksi kerrallaan Altaaseen komennolla a-put:
Latausprosessin lopussa komento ilmoittaa:
-------------------------------------------------------------------------------
1 files from Danio_rerio.GRCz10.fa uploaded to bucket 2001659-mahti-SCRATCH in Allas as one file:
2001659-mahti-SCRATCH/genomes/zebrafish/Danio_rerio.GRCz10.fa
-----------------------------------------------------------------
Upload summary:
Date Name Files Size(kB) Location in allas
12.10.20 12:10:50 Danio_rerio.GRCz10.fa 1 1330852 2001659-mahti-SCRATCH/genomes/zebrafish
-----------------------------------------------------------------
OK
Datan siirtäminen Altaaseen tiedosto kerrallaan on hidasta ja tuottaa suuren määrän
objekteja. Usein on tehokkaampaa ladata dataa palveluun Allakseen yksi hakemisto kerrallaan ja tallentaa data suurempiin kokonaisuuksiin. Esimerkiksi zebrafish-hakemiston lataamiseksi palveluun siirrymme ensin
ylähakemistoon genomes:
Sen jälkeen käytämme a-put-komentoa koko zebrafish-hakemiston lataamiseen palveluun Altaaseen yhtenä
objektina:
Latausprosessin lopussa komento ilmoittaa:
-------------------------------------------------------------------------------
8 files from zebrafish uploaded to bucket 2001659-mahti-SCRATCH in Allas as one tar file:
2001659-mahti-SCRATCH/genomes/zebrafish.tar
-----------------------------------------------------------------
Upload summary:
Date Name Files Size(kB) Location in allas
12.10.20 14:10:47 zebrafish 8 3191656 2001659-mahti-SCRATCH/genomes
-----------------------------------------------------------------
OK
Tämän jälkeen meillä on toinen objekti 2001659-mahti-SCRATCH-ämpärissä:
[kkayttaj@mahti-login11 genomes]$ a-list 2001659-mahti-SCRATCH
2001659-mahti-SCRATCH/genomes/zebrafish.tar
2001659-mahti-SCRATCH/genomes/zebrafish/Danio_rerio.GRCz10.fa
Huomaa, että tiedosto Danio_rerio.GRCz10.fa on nyt itse asiassa tallennettu Allakseen
kahdesti: sekä yksittäisenä objektina (genomes/zebrafish/Danio_rerio.GRCz10.fa)
että osana objektia genomes/zebrafish.tar.
B. Lataaminen Puhtiin
Seuraavaksi lataamme saman datan Puhtiin. Yhdistettyämme Puhtiin siirrymme
projektin 2001659 scratch-hakemistoon ja lataamme allas-moduulin:
Tässä tapauksessa haluamme käyttää Allasta projektilla project_2001659, joten
voimme antaa projektin nimen argumenttina komennolle allas-conf:
Nyt määritysprosessi pyytää vain CSC-salasanan ja muodostaa sitten yhteyden
Allakseen projektia 2001659 varten. Koska Puhdin scratch-hakemisto on kaikkien projektin jäsenten yhteinen, luomme käyttäjäkohtaisen alihakemiston
kkayttaj:
Komennolla a-list voimme nyt nähdä objektit, jotka juuri ladattiin palveluun Mahdista Altaaseen:
[kkayttaj@puhti-login12 kkayttaj]$ a-list
2001659-mahti-SCRATCH
[kkayttaj@puhti-login12 kkayttaj]$ a-list 2001659-mahti-SCRATCH
2001659-mahti-SCRATCH/genomes/zebrafish.tar
2001659-mahti-SCRATCH/genomes/zebrafish/Danio_rerio.GRCz10.fa
Datan paikantaminen on helppoa, koska ämpärissä on vain kaksi objektia, mutta kun Allakseen lisätään enemmän
dataa, tietyn tiedoston löytäminen kymmenien ämpärien ja satojen objektien joukosta
voi olla vaikeaa. Siinä tapauksessa voit etsiä tiettyä tiedostoa komennolla a-find. Tässä esimerkissä voimme tarkistaa,
sisältääkö jokin objekti tiedoston Danio_rerio.GRCz10.fa:
[kkayttaj@puhti-login12 kkayttaj]$ a-find -a Danio_rerio.GRCz10.fa
----------------------------------------------
Checking bucket: 2001659-mahti-SCRATCH
Object: 2001659-mahti-SCRATCH/genomes/zebrafish.tar
includes 2 file names that that match query: Danio_rerio.GRCz10.fa
Object: 2001659-mahti-SCRATCH/genomes/zebrafish/Danio_rerio.GRCz10.fa
includes 1 file names that that match query: Danio_rerio.GRCz10.fa
------------------------------------------------
Query: Danio_rerio.GRCz10.fa
Total of 3 hits were found in 2 objects
-------------------------------------------------
Yllä oleva a-find-raportti kertoo esimerkiksi, että objekti
2001659-mahti-SCRATCH/genomes/zebrafish.tar sisältää kaksi tiedostoa, joiden nimet
vastaavat hakua Danio_rerio.GRCz10.fa (toinen tiedosto on Danio_rerio.GRCz10.fa.fai).
Huomaa, että a-find löytää osumia vain objekteista, jotka on ladattu palveluun
a-put-komennolla.
Seuraavaksi lataamme datan Puhtiin komennolla a-get:
[kkayttaj@puhti-login12 kkayttaj]$ a-get 2001659-mahti-SCRATCH/genomes/zebrafish.tar
Starting to copy data from allas...
Object:
2001659-mahti-SCRATCH/genomes/zebrafish.tar
copied and uncompressed from allas into:
zebrafish
Tämän jälkeen Puhdin nykyisessä työhakemistossa on uusi hakemisto
zebrafish, joka sisältää tiedostot, jotka aiemmin ladattiin palveluun Mahdista
Altaaseen:
[kkayttaj@puhti-login12 kkayttaj]$ ls zebrafish/
Danio_rerio.GRCz10.91.1.bt2 Danio_rerio.GRCz10.91.3.bt2
Danio_rerio.GRCz10.91.2.bt2 Danio_rerio.GRCz10.91.4.bt2
Danio_rerio.GRCz10.91.rev.1.bt2 Danio_rerio.GRCz10.fa
Danio_rerio.GRCz10.91.rev.2.bt2 Danio_rerio.GRCz10.fa.fai
Esimerkki 2: Allaksen käyttö Rclonella
A. Datan lataaminen palveluun Rclonella
Rclone on tehokäyttäjän työkalu Allakselle. Se sopii hyvin tilanteisiin, joissa data täytyy tallentaa siten, että jokainen tiedosto on erillinen objekti.
Warning
Rclone tarjoaa nopean ja tehokkaan tavan käyttää Allasta, mutta sitä tulee käyttää varovasti, sillä Rclone-toiminnot voivat ylikirjoittaa ja poistaa dataa sekä Allaksessa että paikallisessa levyympäristössä ilmoittamatta tai pyytämättä vahvistusta.
Tässä esimerkissä käytetään samaa dataa kuin edellisessä tapauksessa: Mahdin scratch-hakemistossa
meillä on alihakemisto genomes/zebrafish, joka sisältää alla luetellut kahdeksan
tiedostoa:
[kkayttaj@mahti-login11 ~]$ ls /scratch/project_2001659/genomes/zebrafish
Danio_rerio.GRCz10.91.1.bt2 Danio_rerio.GRCz10.91.2.bt2
Danio_rerio.GRCz10.91.3.bt2 Danio_rerio.GRCz10.91.4.bt2
Danio_rerio.GRCz10.91.rev.1.bt2 Danio_rerio.GRCz10.91.rev.2.bt2
Danio_rerio.GRCz10.fa Danio_rerio.GRCz10.fa.fai
Kopioidaksemme tämän hakemiston sisällön Altaaseen asetamme ensin Allas-ympäristön:
Sen jälkeen avaamme yhteyden Allakseen komennolla allas-conf. Komento
pyytää käyttäjän CSC-salasanaa ja listaa sitten Allas-projektit, joihin käyttäjällä on pääsy.
Tässä tapauksessa valitsemme project_2001659:
[kkayttaj@mahti-login11 ~]$ allas-conf
Please enter CSC password for account kkayttaj: <password>
Checking projects available for your account.
Please wait.
1) project_2000982 2) project_2001659 3) project_2000136 4) abort allas_conf
Please choose a project by giving an item number from the list above: 2
Configuration will be done for project: project_2001659
Protocols:
swift
Connection stays active for eight hours.
Yllä oleva allas-conf-toimenpide määrittää Allas-yhteyden, joka on voimassa
kahdeksan tuntia. Seuraavaksi siirrymme genomes-hakemistoon:
Edellisessä esimerkissä käytetyn a-put-komennon sijaan käytämme komentoa
rclone copyto kopioidaksemme kaikki annetun hakemiston tiedostot Altaaseen. rclone-tapauksessa oletusämpäriä ei ole. Sen sijaan meidän täytyy määrittää
ämpäri. Tässä esimerkissä käytämme ämpärin nimeä 2001659-genomes ja määritämme
jokaisen objektin nimen alkamaan etuliitteellä zebrafish.
Tiedostojen kopioinnin jälkeen voimme käyttää komentoa rclone ls nähdäksemme, mitä
Allakseen on ladattu palveluun:
[kkayttaj@mahti-login11 genomes] rclone ls allas:2001659-genomes/zebrafish
450646234 Danio_rerio.GRCz10.91.1.bt2
334651392 Danio_rerio.GRCz10.91.2.bt2
187325 Danio_rerio.GRCz10.91.3.bt2
334651387 Danio_rerio.GRCz10.91.4.bt2
450646234 Danio_rerio.GRCz10.91.rev.1.bt2
334651392 Danio_rerio.GRCz10.91.rev.2.bt2
1362788082 Danio_rerio.GRCz10.fa
715 Danio_rerio.GRCz10.fa.fai
B. Datan lataaminen Puhtiin
Seuraavaksi lataamme saman datan Puhtiin. Yhdistettyämme Puhtiin siirrymme
projektin project_2001659 scratch-hakemistoon ja lataamme allas-moduulin:
Tässä tapauksessa haluamme käyttää Allasta projektilla 2001659, joten voimme antaa
projektin nimen argumenttina komennolle allas-conf:
Nyt määritysprosessi pyytää vain CSC-salasanan ja muodostaa sitten yhteyden
Allakseen projektia 2001659 varten. Koska Puhdin scratch-hakemisto on kaikkien projektin jäsenten yhteinen, luomme käyttäjäkohtaisen alihakemiston
kkayttaj ja siirrymme sinne:
Voimme nyt käyttää komentoa rclone lsd tarkistaaksemme käytettävissä olevat ämpärit
Allaksessa:
[kkayttaj@puhti-login12 kkayttaj]$ rclone lsd allas:
3268222761 2020-10-03 10:01:42 8 2001659-genomes
2576778428 2020-10-03 10:01:42 4 2001659-mahti-SCRATCH
Nyt näemme kaksi ämpäriä. 2001659-genomes on tässä esimerkissä juuri luotu,
kun taas 2001659-mahti-SCRATCH on peräisin edellisestä
a-komentoesimerkistä. Seuraavaksi listaamme objektit 2001659-genomes-ämpärissä:
[kkayttaj@puhti-login12 kkayttaj]$ rclone ls allas:2001659-genomes
450646234 zebrafish/Danio_rerio.GRCz10.91.1.bt2
334651392 zebrafish/Danio_rerio.GRCz10.91.2.bt2
187325 zebrafish/Danio_rerio.GRCz10.91.3.bt2
334651387 zebrafish/Danio_rerio.GRCz10.91.4.bt2
450646234 zebrafish/Danio_rerio.GRCz10.91.rev.1.bt2
334651392 zebrafish/Danio_rerio.GRCz10.91.rev.2.bt2
1362788082 zebrafish/Danio_rerio.GRCz10.fa
715 zebrafish/Danio_rerio.GRCz10.fa.fa
Lopuksi käytämme komentoa rclone copyto kopioidaksemme datan Allaksesta
Puhtiin uuteen hakemistoon zebrafish2:
[kkayttaj@puhti-login12 kkayttaj]$ rclone -P copyto allas:2001659-genomes/zebrafish zebrafish2
Transferred: 3.044 GiB / 3.044 GiB, 100%, 323.600 MBytes/s, ETA 0s
Transferred: 8 / 8, 100%
Elapsed time: 9.6s
[kkayttaj@puhti-login12 kkayttaj]$ ls zebrafish2
Danio_rerio.GRCz10.91.1.bt2 Danio_rerio.GRCz10.91.3.bt2
Danio_rerio.GRCz10.91.2.bt2 Danio_rerio.GRCz10.91.4.bt2
Danio_rerio.GRCz10.91.rev.1.bt2 Danio_rerio.GRCz10.fa
Danio_rerio.GRCz10.91.rev.2.bt2 Danio_rerio.GRCz10.fa.fai
Esimerkki 3: Suurten tiedostojen lataaminen palveluun Allakseen
Kahdessa edellisessä esimerkissä datan todellinen määrä oli melko kohtuullinen, vain muutamia gigatavuja. Jos yksittäisen datatiedoston koko on satoja gigatavuja tai enemmän, jo muutaman tiedoston siirtäminen voi kestää pidempään kuin token-pohjaisen Allas-tunnistautumisen voimassaoloaika.
Tässä esimerkissä käytämme a-put-komentoa suurten tiedostojen joukon lataamiseen palveluun Mahdista
Altaaseen.
Ensimmäinen tehtävä on avata Mahti-yhteys, joka voi pysyä käynnissä
pitkään. Tässä esimerkissä käytämme screen-komentoa avataksemme istunnon, joka
voidaan jättää käyntiin taustalle:
screen-komento käynnistää virtuaalisen istunnon Mahdin kirjautumissolmulla. Voit
jättää tämän virtuaalisen screen-istunnon käyntiin taustalle ja kirjautua ulos
Mahdista, mutta sinun tulee tarkistaa, millä kirjautumissolmulla (mahti-login[11,12,14,15])
istuntosi on käynnissä, koska sinun täytyy kirjautua samalle solmulle
yhdistääksesi myöhemmin uudelleen screen-istuntoosi.
screen-istunnossa lataa ensin allas-moduuli ja käytä allas-conf-komentoa
yhteyden muodostamiseen Allakseen.
Tässä allas-conf-komentoa käytetään valitsimella -k, joka tallentaa CSC-salasanasi
ympäristömuuttujaan ($OS_PASSWORD), jotta yhteys Allakseen voidaan myöhemmin määrittää automaattisesti uudelleen ilman, että salasanaa tarvitsee antaa uudestaan.
Allas-yhteyden avaamisen jälkeen siirrymme hakemistoon my_data, jossa
meillä on kolme alihakemistoa (50, 90, 100). Listaamme näissä hakemistoissa olevat gzip-pakatut
tiedostot:
[kkayttaj@mahti-login11 ~] cd /scratch/project_2001659/my_data
[kkayttaj@mahti-login my_data] ls -lh */*.gz
-rw-rwxr-x 1 kkayttaj csc 45G May 8 12:57 100/uniref100.fasta.gz
-rw-rwxr-x 1 kkayttaj csc 61G Jun 5 13:09 100/uniref100.xml.gz
-rw-rwxr-x 1 kkayttaj csc 589M Jun 5 13:09 50/uniref50.fasta.gz
-rw-rwxr-x 1 kkayttaj csc 17G Jun 5 13:09 50/uniref50.xml.gz
-rw-r-xr-x 1 kkayttaj csc 4.2G Jul 6 09:46 90/uniref90.fasta.gz
-rw-rwxr-x 1 kkayttaj csc 33G Jun 5 13:09 90/uniref90.xml.gz
Seuraavaksi käynnistämme latausprosessin. Tässä tapauksessa emme käytä oletusämpärin nimeä,
vaan annamme nimeksi 2001659-uniref:
Tämä komento lataa yllä luetellut tiedostot palveluun Allakseen. Vaihtoehtoisesti voisimme
käynnistää saman latauksen komennolla rclone copy:
Voimme jättää istunnon käyntiin taustalle painamalla Ctrl-A D. Nyt
voimme kirjautua ulos Mahdista niin, että screen-istunto pysyy aktiivisena
käyttämällämme Mahdin kirjautumissolmulla (tässä tapauksessa mahti-login11).
Yhdistääksemme tähän istuntoon uudelleen muodostamme ensin yhteyden siihen Mahdin solmuun,
jolla screen-istunto on käynnissä:
Sen jälkeen liitämme screen-istunnon uudelleen:
Kun a-put-komento on valmis, suoritamme a-check-komennon tarkistaaksemme, että
kaikki dataobjektit on luotu. a-check täytyy suorittaa täsmälleen samoilla valitsimilla kuin a-put-komento. Tässä tapauksessa komento olisi siis:
a-check-komento vertaa palveluun ladattavien kohteiden nimiä niitä vastaaviin
objekteihin Allaksessa. Tiedostot tai hakemistot, joille ei löydy kohdeobjektia
Allaksesta, raportoidaan ja tallennetaan tiedostoon. Tässä tapauksessa, jos jokin yllä olevan
a-put-komennon objekteista puuttuisi, a-check listaisi puuttuvat
tiedostot ja hakemistot tiedostoon missing_2001659-uniref_63449 (lopussa oleva numero
on vain satunnaisluku).
Puuttuvien kohteiden tiedostoa voidaan sitten käyttää a-put-komennon valitsimella --input-list
epäonnistuneen latausprosessin jatkamiseksi:
Huomaa, että a-check ei tarkista, ovatko objektin todelliset sisällöt
oikeita. Se tarkistaa vain objektien nimet, jotka voivat yhtä hyvin olla
peräisin jostakin muusta lähteestä.
Esimerkki 4: Monimutkaisten hakemistorakenteiden lataaminen palveluun Allakseen
Jotkin työnkulut ja ohjelmistot luovat monimutkaisia hakemistorakenteita datan tallentamiseen ja hallintaan. Sinulla voi olla hakemistoja, joissa on tuhansia tai jopa miljoonia yksittäisiä tiedostoja. Tällaisten aineistojen kopioiminen Allakseen vie aikaa eikä ole aina suoraviivaista. Järkevin tapa ladata tällaista dataa palveluun riippuu tapauksesta. Tämä esimerkki esittelee muutamia vaihtoehtoja.
Aloitamme avaamalla screen-istunnon Puhdissa ja muodostamalla Allas-yhteyden aivan kuten edellisessä esimerkissä:
Oletetaan, että meillä on hakemistorakenne, joka sisältää kuvia tienpintakameroista kymmenestä sijainnista kymmenen minuutin välein vuosilta
2014–2018. Data sijaitsee hakemistossa road_cameras, jossa jokaisella
sijainnilla on oma alihakemistonsa (kymmenen hakemistoa). Kunkin alihakemiston sisällä
on toinen alihakemistokerros, yksi jokaiselle vuodelle (viisi
alihakemistoa), joista kukin sisältää alihakemistot vuoden jokaiselle päivälle
(lisäksi 365 alihakemistoa), joista kukin sisältää 144 pientä kuvatiedostoa.
Esimerkiksi:
Näin ollen tiedostojen kokonaismäärä hakemistossa road_cameras on
10 * 5 * 365 * 144 = 2 628 000.
Periaatteessa voisimme kopioida kaikki 2,6 miljoonaa tiedostoa erillisinä objekteina Allakseen,
mutta siinä tapauksessa data pitäisi jakaa useisiin ämpäreihin, koska yhdessä ämpärissä
voi olla enintään 0,5 miljoonaa objektia. Voisit esimerkiksi suorittaa erillisen
rclone-komennon jokaiselle site_*-hakemistolle ja sijoittaa kunkin sijainnin datan
sijaintikohtaiseen ämpäriin. Esimerkiksi:
Tällä tavalla loisit kymmenen ämpäriä, joista kukin sisältäisi 262 800 objektia. Tämä lähestymistapa voisi olla tehokkain tapa tallentaa ja käyttää dataa uudelleen, jos tiedät tarvitsevasi pääsyn yksittäisiin kuviin satunnaisesti.
Toisena äärivaihtoehtona voisimme käyttää a-put-komentoa ja kerätä kaiken datan
yhdeksi arkisto-objektiksi. Jotta tämä onnistuu, sinun täytyy lisätä valitsin
--skip-filelist a-put-komentoon. Oletuksena a-put kerää yksityiskohtaisen
metadatan jokaisesta tiedostosta ameta-tiedostoon. Jos tiedostoja on kuitenkin miljoonia,
tämän tiedon kerääminen vie paljon aikaa. Jos sinun tarvitsee tietää tiedostojen nimet,
voit käyttää valitsinta --simple-fileslist nimien keräämiseen –
mutta ei mitään muuta tietoa – metadatatiedostoon. Tämä jo
nopeuttaa esikäsittelyä merkittävästi. Tässä tapauksessa nimeäminen on kuitenkin ollut järjestelmällistä, joten tiedostonimien tallentaminen metadatatiedostoihin voidaan
jättää kokonaan pois (--skip-filelist), mikä on nopein vaihtoehto.
Tämä lähestymistapa tallentaisi kaikki 2,6 miljoonaa tiedostoa yhtenä objektina.
Käytännössä optimaalinen tapa tallentaa data on kuitenkin usein jotakin näiden kahden ääripään väliltä. Kompromissina voisit käyttää pakkaamista hierarkian ylemmällä tasolla. Esimerkiksi:
Tämä tuottaisi kymmenen objektia, joista kukin sisältäisi kaikki yhden kamerasijainnin tiedot. Vaihtoehtoisesti voisit arkistoida datan niin, että kunkin kameran kunkin vuoden data kerätään yhdeksi objektiksi:
Tämä vaihtoehto tallentaisi datan 50 objektina. Päiväkohtaiset objektit kullekin
kameralle voisivat olla käytännöllisin vaihtoehto datan myöhempää käyttöä varten, mutta
haittapuolena datan esikäsittely 10 * 5 * 365 = 18250 objektiksi
veisi todennäköisesti melko paljon aikaa.
Miljoonien tiedostojen kopioiminen Allakseen vie paljon aikaa menetelmästä riippumatta.
Jos olemme käynnistäneet a-put-komennon screen-istunnon sisällä, voimme irrottautua
virtuaali-istunnosta painamalla Ctrl-A D, kirjautua ulos Puhdista ja jättää
latausprosessin käyntiin päiviksi.
Kun a-put-komento on valmis, suoritamme a-check-komennon tarkistaaksemme, että
kaikki dataobjektit on luotu. a-check täytyy suorittaa täsmälleen samoilla valitsimilla kuin a-put-komento. Tässä tapauksessa komento olisi siis:
a-check-komento vertaa palveluun ladattavien kohteiden nimiä niitä vastaaviin
objekteihin Allaksessa. Tiedostot tai hakemistot, joille ei löydy kohdeobjektia
Allaksesta, raportoidaan ja tallennetaan tiedostoon. Tässä tapauksessa, jos jokin yllä olevan
a-put-komennon objekteista puuttuisi, a-check listaisi puuttuvat
tiedostot ja hakemistot tiedostoon missing_<bucket_name>_<number> (lopussa oleva numero
on vain satunnaisluku).
Puuttuvien kohteiden tiedostoa voidaan sitten käyttää a-put-komennon valitsimella --input-list
epäonnistuneen latausprosessin jatkamiseksi:
Huomaa, että a-check ei tarkista, ovatko objektin todelliset sisällöt
oikeita. Se tarkistaa vain objektien nimet, jotka voivat yhtä hyvin olla
peräisin jostakin muusta lähteestä.