Esimerkkejä Allaksen käytöstä CSC:n supertietokoneissa
CSC:n supertietokoneet, Puhti ja Mahti, eivät tarjoa pysyvää tallennustilaa tutkimusdatalle. Data, joka tarvitsee säilyttämistä pidemmäksi aikaa kuin vain muutamaksi viikoksi, tulisi kopioida Allas-objektitallennuspalveluun. Allas tarjoaa alustan, jota voi käyttää datan säilyttämiseen niin kauan kuin CSC-projekti on aktiivinen. Tallennuksen lisäksi Allasta voidaan käyttää datan siirtoon eri palvelimien välillä ja datan jakamiseen muiden käyttäjien kanssa.
Tämä opas tarjoaa neljä esimerkkiä Allaksen käytöstä Puhti- ja Mahti-supertietokoneissa. Esimerkit perustuvat interaktiivisesti suoritettaviin komentoihin ja soveltuvat näin ollen vain suhteellisen pieniin datamääriin (max. muutamia satoja gigatavuja).
- Ensimmäisessä esimerkissä käytetään a-komentoja (
a-put
,a-get
) datan lataamiseen Mahtista Allakseen ja sen jälkeen Puhtiin. - Toisessa esimerkissä siirretään sama data Rclonea käyttäen.
- Kolmas esimerkki keskittyy suurten tiedostojen lataamiseen Allakseen.
- Neljässä esimerkissä käsitellään tilannetta, jossa kopioitava data sisältää suuren määrän tiedostoja.
A-komennot soveltuvat paremmin tapauksissa, joissa dataa käytetään pääasiassa CSC:n laskentaympäristössä (Puhti, Mahti). Toinen vaihtoehto, Rclone, on hyvä valinta silloin, kun dataa käytetään myös CSC:n ulkopuolella.
Allas-palvelun käyttöönotto
Oletuksena CSC:n laskentaprojekteilla ei ole pääsyä Allakseen. Siksi ensimmäinen asia on lisätä Allas-palvelu projektiin. Tämä tehdään MyCSC portaalissa. Huomaa, että vain projektipäällikkö voi hakea pääsyoikeutta.
Allaksen oletustallennuskiintiö on 10 TB. Koska tätä tilaa jakavat kaikki projektin jäsenet, on mahdollista, että tila ei riitä. Tällöin tulee arvioida, kuinka paljon lisätilaa tarvitaan, ja pyytää lisätilaa. Pyyntö tulee lähettää CSC Service Deskille. Muista sisällyttää tallennuspyyntöösi:
- Projektin ID/nimi
- Tarvittavan Allas-tilan määrä
- Lyhyt kuvaus säilytettävästä datasta
Huomaa, että Allakseen tallennettu data kuluttaa projektin laskutusyksiköitä.
Esimerkki 1: Allaksen käyttö a-komennoilla
A. Datan lataaminen Mahtista Allakseen
A-komennot ovat Allas-spesifisiä työkaluja, jotka mahdollistavat helpon alun Allaksen käyttöön. A-komennot arkistoivat ja siirtävät dataa automaattisesti. Voit myös pakata datasi ennen tallennusta. Esimerkiksi tekstimuotoisen datan pakkaus vähentää tarvittavaa tallennustilaa, mutta tekee siirtoprosessista hieman hitaamman. A-komennot ovat hyvä vaihtoehto monenlaiselle datalle, jota käytetään pääasiassa CSC:n ympäristössä.
Tässä esimerkissä meillä on aliarkisto genomes/zebrafish
projektin työkansiossa Mahtissa (/scratch/project_2001659
). Zebrafish
-kansio sisältää kahdeksan tiedostoa, jotka on lueteltu alla:
[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 kansion sisällön Allakseen, me ensin asetamme Allaksen ympäristön:
Sitten avaamme yhteyden Allakseen komennolla allas-conf
. Komento pyytää käyttäjän CSC-salasanaa ja sitten listaa ne Allas-projektit, joihin on pääsy. 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 aloittaa toisen projektin käytön, meidän tulee suorittaa allas-conf
uudelleen. Muista kuitenkin, että tietyt työkalut, esimerkiksi rclone
, voidaan silti määrittää käyttämään useita Allas-projekteja samanaikaisesti.
Seuraavaksi siirrymme zebrafish
-kansioon:
Voimme nyt ladata tiedostoja yksi kerrallaan Allakseen käyttäen a-put
komentoa:
Latausprosessin lopuksi komento raportoi:
-------------------------------------------------------------------------------
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 Allakseen tiedosto kerrallaan on hidasta ja tuottaa suuren määrän objekteja. Usein onkin tehokkaampaa ladata data Allakseen koko hakemisto kerrallaan ja tallentaa data suurempina kokonaisuuksina. Esimerkiksi lataamaan zebrafish
-kansio, me ensin siirrymme yläkansioon genomes
:
Sitten käytämme a-put
komentoa, jotta voimme ladata koko zebrafish
-kansion Allakseen yhtenä objektina:
Latauksen lopuksi komento raportoi:
-------------------------------------------------------------------------------
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
nimisessä bucketissa:
[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 tallennettu Allakseen kahdesti; sekä yksittäisenä objektina (genomes/zebrafish/Danio_rerio.GRCz10.fa
) että osana genomes/zebrafish.tar
objektia.
B. Lataaminen Puhti-supertietokoneeseen
Seuraavaksi lataamme saman datan Puhtiin. Yhdistämisen jälkeen Puhtiin siirrymme projektin 2001659 työkansioon ja lataamme allas
moduulin:
Tässä tapauksessa haluamme käyttää Allasta projektin project_2001659
kanssa, joten voimme antaa projektin nimen argumenttina allas-conf
komennolle:
Nyt konfigurointiprosessi kysyy vain CSC-salasanaa ja asettaa Allas-yhteyden projektille 2001659. Koska Puhti-työkansio on jaettu kaikille projektin jäsenille, luomme käyttäjäkohtaisen alikansion kkayttaj
:
Komennolla a-list
voimme nyt nähdä objektit, jotka juuri ladattiin Mahtista Allakseen:
[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
Datansijainnin löytäminen on helppoa, koska bucketissa on vain kaksi objektia, mutta kun Allakseen lisätään lisää dataa, tietyn tiedoston löytäminen kymmenistä bucketeista, joissa on satoja objekteja, voi olla vaikeaa. Tällöin voit etsiä tiettyä tiedostoa komennolla a-find
. Tässä esimerkissä voimme tarkistaa, sisältääkö 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
-------------------------------------------------
a-find
raportti yllä kertoo esimerkiksi, että objekti
2001659-mahti-SCRATCH/genomes/zebrafish.tar
sisältää kaksi tiedostoa, joiden nimet vastaavat Danio_rerio.GRCz10.fa
(toinen tiedosto on Danio_rerio.GRCz10.fa.fai
). Huomaa, että a-find
löytää osumat vain niiden objektien joukosta, jotka on ladattu a-put
komennolla.
Seuraavaksi lataamme datan Puhtiin käyttämällä a-get
komentoa:
[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 nykyisessä työkansiossa Puhtissa on uusi zebrafish
-kansio, joka sisältää tiedostot, jotka aiemmin ladattiin Mahtista Allakseen:
[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ö Rclone-työkalulla
A. Datan lataaminen Rclone-työkalulla
Rclone on Allaksen tehokäyttäjätyökalu. Se on hyvä tapauksissa, joissa data täytyy tallentaa siten, että jokainen tiedosto on erillinen objekti.
Warning
Rclone tarjoaa nopean ja tehokkaan tavan käyttää Allasta, mutta sitä pitäisi käyttää varoen, sillä Rclone-toiminnot voivat ylikirjoittaa ja poistaa dataa sekä Allaksessa että paikallisessa levyjärjestelmässä ilman ilmoitusta tai vahvistusta.
Tässä esimerkissä käytetään samaa dataa kuin aiemmassa tapauksessa: Mahtin työkansiossa meillä on aliarkisto genomes/zebrafish
, joka sisältää kahdeksan tiedostoa, jotka on lueteltu alla:
[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 kansion sisällön Allakseen, me ensin asetamme Allaksen ympäristön:
Sitten avaamme yhteyden Allakseen komennolla allas-conf
. Komento pyytää käyttäjän CSC-salasanaa ja sitten listaa ne 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ä kuvattu allas-conf
määrittelee Allas-yhteyden, joka on voimassa kahdeksan tuntia. Seuraavaksi siirrymme genomes
-kansioon:
Käyttäen a-put
komennon sijaan edellisessä esimerkissä, käytämme komentoa rclone copyto
kopioimaan kaikki tiedostot annetusta hakemistosta Allakseen. Rclone tapauksessa ei ole oletusarvoista buckettia. Sen sijaan, meidän on määritettävä bucketin nimi. Tässä esimerkissä käytämme bucketin nimeä 2001659-genomes
ja jokaisen objektin nimen alkuun tulee lisätä prefiksi zebrafish
.
Kun tiedostot on kopioitu, voimme käyttää rclone ls
tarkistaaksemme, mitä on ladattu Allakseen:
[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. Yhdistämisen jälkeen Puhtiin siirrymme projektin 2001659 työkansioon ja lataamme allas
moduulin:
Tässä tapauksessa haluamme käyttää Allasta projektin 2001659 kanssa, joten voimme antaa projektin nimen argumenttina allas-conf
komennolle:
Nyt konfigurointiprosessi kysyy vain CSC-salasanaa ja asettaa Allas-yhteyden projektille 2001659. Koska Puhti-työkansio on jaettu kaikille projektin jäsenille, luomme käyttäjäkohtaisen alikansion kkayttaj
ja menemme sinne:
Voimme nyt käyttää komentoa rclone lsd
tarkistaaksemme saatavilla olevat bucketit 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 buckettia. 2001659-genomes
on juuri tässä esimerkissä luotu, kun taas 2001659-mahti-SCRATCH
on peräisin edellisestä a-komento esimerkistä. Seuraavaksi listaamme objektit 2001659-genomes
bucketissa:
[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 rclone copyto
komentoa kopioidaksemme datan Allaksesta Puhtiin uuteen zebrafish2
kansioon:
[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 Allakseen
Edellisissä kahdessa esimerkissä todellisen datan määrä oli melko maltillinen, vain muutama gigatavu. Jos yksittäisen tiedoston koko on satoja gigatavuja tai enemmän, muutaman tiedoston siirtäminen voi viedä kauemmin kuin Allaksen todennointiin perustuva yhteyttäminen kestää.
Tässä esimerkissä käytämme a-put
komennolla suurten tiedostojen lataamiseen Mahtista Allakseen.
Ensimmäinen asia on avata Mahti-yhteys, joka voi pysyä auki pitkään. Tässä esimerkissä käytämme screen
komentoa avaamaan istunnon, joka voidaan jättää taustalle:
screen
komento käynnistää virtuaali-istunnon Mahtin kirjautumissolmussa. Voit jättää tämän virtuaalisen screen
-istunnon taustalle ja kirjautua ulos Mahtista, mutta sinun kannattaa tarkistaa, millä kirjautumissolmulla (mahti-login[11,12,14,15]
) istuntosi on käynnissä, koska sinun on kirjauduttava samaan solmuun voidaksesi jälleenyhdistää screen
-istuntoosi myöhemmin.
screen
-istunnossa ensin ladataan allas
moduuli ja käytetään allas-conf
avaamaan yhteyttä Allakseen.
Tässä allas-conf
käytetään -k
optiolla, joka tallentaa CSC-salasanasi ympäristömuuttujaan ($OS_PASSWORD
), jotta Allas-yhteys voidaan myöhemmin määrittää automaattisesti antamatta salasanaa uudelleen.
Avasimme Allas-yhteyden jälkeen siirrymme my_data
hakemistoon, jossa meillä on kolme alihakemistoa (50
, 90
, 100
). Listataan gzip-pakatut tiedostot näissä hakemistoissa:
[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ä oletusarvoista buckettia vaan annamme nimen 2001659-uniref
:
Tämä komento lataa yllä luetellut tiedostot Allakseen. Vaihtoehtoisesti voisimme aloittaa saman latauksen käyttäen rclone copy
:
Voimme jättää istunnon taustalle painamalla Ctrl-A D
. Nyt voimme kirjautua ulos Mahtista jättäen screen
-istunnon aktiiviseksi käytetyllä kirjautumissolmulla (tässä tapauksessa mahti-login11
).
Jälleenyhdistääksesi tähän istuntoon, yhdistämme ensin siihen Mahti-solmuun, jossa screen
-istunto on käynnissä:
Sitten attachoimme screen
-istunnon:
Kun a-put
komento on valmis, suoritetaan a-check
komento tarkistaaksemme, onko kaikki dataobjektit luotu. a-check
täytyy suorittaa täsmälleen samoilla asetuksilla kuin a-put
komennossa käytettiin. Joten tässä tapauksessa komento olisi:
a-check
komento vertaa ladattavien kohteiden nimiä vastaaviin objekteihin Allaksessa. Tiedostot tai hakemistot, joilla ei ole kohdeobjektia Allaksessa, raportoidaan ja tallennetaan tiedostoon. Tässä tapauksessa, jos joitakin objekteja a-put
komennossa olisi puuttuva, a-check
luettelisi puuttuvat tiedostot ja alihakemistot tiedostoon missing_2001659-uniref_63449
(lopussa oleva numero on vain satunnainen numero).
Puuttuvien kohteiden tiedostoa voidaan sitten käyttää a-put
vaihtoehdon --input-list
kanssa jatkamaan epäonnistunutta latausprosessia:
Huomaa, että a-check
ei tarkista onko objektin todellinen sisältö oikein. Se tarkistaa vain objektien nimet, jotka saattavat yhtä hyvin olla peräisin muista lähteistä.
Esimerkki 4: Monimutkaisten hakemistorakenteiden lataaminen Allakseen
Jotkin työprosessit ja ohjelmistot luovat monimutkaisia hakemistorakenteita datan tallentamiseen ja hallintaan. Saatat omistaa hakemistoja, joissa on tuhansia tai jopa miljoonia yksittäisiä tiedostoja. Tällaisen datan kopiointi Allakseen vie aikaa eikä ole aina yksinkertaista. Tällaisten datojen lataamiseen paras tapa riippuu tilanteesta. Tämä esimerkki esittelee muutamia vaihtoehtoja.
Ensin avaamme screen
-istunnon Puhtissa ja asetamme Allas-yhteyden aivan kuten edellisessä esimerkissä:
Oletetaan, että meillä on hakemistorakenne, joka sisältää kuvia tieolosuhdekameroista kymmenestä kohteesta kymmenen minuutin välein vuosilta 2014–2018. Data sijaitsee hakemistossa road_cameras
, jossa jokainen sijainti on oma alihakemistonsa (kymmenen hakemistoa). Jokaisen alihakemiston sisällä on toinen kerros alihakemistoja, yksi jokaiselle vuodelle (viisi alihakemistoa), joista jokainen sisältää alihakemistoja jokaiselle sen vuoden päivälle (365 alihakemistoa lisää), joista jokainen sisältää 144 pientä kuvatiedostoa.
Esimerkiksi:
Näin ollen tiedostojen kokonaismäärä road_cameras
hakemistossa on
10 * 5 * 365 * 144 = 2 628 000
.
Periaatteessa voisimme kopioida kaikki 2,6 miljoonaa tiedostoa erillisinä objekteina Allakseen, mutta siinä tapauksessa meidän pitäisi jakaa data useisiin bucketteihin, sillä yksi bucket voi sisältää enintään 0,5 miljoonaa objektia. Voisit esimerkiksi ajaa erillisen rclone
komennon jokaiselle site_*
hakemistolta ja sijoittaa data site-kohtaiseen bucketiin. Esimerkiksi:
Näin päädyttäisiin luomaan kymmenen buckettia, jotka sisältävät kukin 262 800 objektia. Tämä lähestymistapa voi olla tehokkain tapa tallentaa ja hyödyntää dataa, jos tiedät tarvitsevasi pääsyä yksittäisiin kuviin satunnaisesti.
Toisena äärimmäisenä vaihtoehtona voisimme käyttää a-put
komentoa ja kerätä koko datan yhdeksi arkisto-objektiksi. Jotta tämä onnistuisi, sinun täytyy lisätä --skip-filelist
vaihtoehto a-put
komennon. Oletuksena a-put
kerää yksityiskohtaisia metatietoja jokaisesta tiedostosta ameta
tiedostossa. Kuitenkin, jos sinulla on miljoonia tiedostoja, tämän tiedon kokoaminen kestää pitkään. Jos sinun täytyy tietää tiedostojen nimet, voit käyttää --simple-fileslist
vaihtoehtoa kerätäksesi ainoastaan nimet – mutta ei muuta tietoa – tiedostoista metatietotiedostossa. Tämä nopeuttaa esikäsittelyä huomattavasti. Kuitenkin, koska tässä tapauksessa nimeäminen on ollut järjestelmällistä, tiedostojen nimien tallentaminen metatietotiedostoihin voidaan yksinkertaisesti ohittaa kokonaan (--skip-filelist
), mikä on nopein vaihtoehto.
Tämä lähestyminen tallentaisi kaikki 2,6 miljoonaa tiedostoa yhdeksi objektiksi.
Käytännössä kuitenkin, datan optimaalinen tallennustapa on usein jotain näiden kahden ääripään välillä. Kompromissina voitaisiin soveltaa pakkausta korkeammassa hierarkian tasolla. Esimerkiksi:
Tämä tuottaisi kymmenen objektia, joista jokainen sisältää koko tiedon yhdestä kamerapaikasta. Vaihtoehtoisesti voit suorittaa arkistoinnin siten, että kunkin kameran kutakin vuotta koskeva data kootaan yhdeksi objektiksi:
Tämä vaihtoehto tallentaisi datan 50 objektina. Päiväkohtaiset objektit jokaisesta kamerasta saattavat olla käytännöllisin vaihtoehto datan myöhempää käyttöä ajatellen, mutta haittapuolena esikäsittelydatan muokkaaminen 10 * 5 * 365 = 18250
objektiksi todennäköisesti vie melko pitkään.
Miljoonien tiedostojen kopiointi Allakseen ottaa aikaa riippumatta menetelmästä. Jos olemme aloittaneet a-put
komennon screen
-istunnon sisällä, voimme irrottaa virtuaali-istunnon painamalla Ctrl-A D
, kirjautua ulos Puhtista ja jättää latausprosessin käynnissä päiviksi.
Kun a-put
komento on valmis, ajetaan a-check
komento tarkistaaksemme, onko kaikki dataobjektit luotu. a-check
täytyy suorittaa täsmälleen samoilla asetuksilla kuin a-put
komennossa käytettiin. Näin ollen tässä tapauksessa komento olisi:
a-check
komento vertaa ladattavien nimien kohteita vastaaviin objekteihin Allaksessa. Tiedostot tai hakemistot, joilla ei ole kohdeobjektia Allaksessa, raportoidaan ja tallennetaan tiedostoon. Tässä tapauksessa, jos joitakin objekteja a-put
komennossa olisi puuttuva, a-check
luettelisi puuttuvat tiedostot ja hakemistot tiedostoon missing_<bucket_name>_<number>
(lopussa oleva numero on vain satunnainen numero).
Puuttuvien kohteiden tiedostoa voidaan sitten käyttää a-put
vaihtกำ절เพิ่มtion --input-list
kanssa jatkamaan epäonnistunutta latausprosessia:
Huomaa, että a-check
ei tarkista, onko objektin todellinen sisältö oikein. Se tarkistaa vain objektinimet, jotka saattavat aivan yhtä hyvin olla peräisin muista lähteistä.