Swift-asiakas
Python Swift -asiakas on komentorivityökalu kohteena olevien tallennusjärjestelmien, kuten Allas, käyttöön. Jos käytät Allasta Puhtilla tai Mahtilla, kaikki tarvittavat paketit ja ohjelmistot on jo asennettu.
Avaa yhteys Allakseen:Yllä oleva allas-conf-komento pyytää CSC-salasanaasi (samaa, jota käytät kirjautuessasi CSC:n palvelimille). Se listaa projektisi Allaksessa ja pyytää sinua määrittelemään käytettävän projektin. allas-conf luo ja todentaa yhteyden valittuun projektiin Allaksessa. Autentikointitiedot tallennetaan shellin muuttujiin OS_AUTH_TOKEN ja OS_STORAGE_URL, jotka ovat voimassa jopa kahdeksan tuntia. Kuitenkin voit päivittää autentikoinnin milloin tahansa ajamalla allas-conf uudelleen. Ympäristömuuttujat ovat käytettävissä vain kyseiselle kirjautumiskerralle. Jos avaat toisen istunnon, sinun on autentikoitava uudelleen päästäksesi Allakseen.
Tämä luku sisältää ohjeet seuraaville toiminnoille:
Swift-komento | Toiminto |
---|---|
post | Luo säilö |
upload | Lataa objekti |
list | Listaa objektit ja säilöt |
download | Lataa objektit ja säilöt |
copy | Siirrä objekti |
delete | Poista objektit tai säilö |
download --all | Lataa koko projekti |
delete --all | Poista koko projekti |
md5sum | Hanki tarkistussumma |
stat | Näytä metadata |
stat --meta | Lisää metadata |
tempurl | Luo tilapäinen URL |
post -r, -w, --read-acl | Hallitse käyttöoikeuksia |
upload --use-slo | Lataa yli 5 GB:n tiedostot |
Voit myös asentaa ja käyttää Swiftiä CSC:n laskentaympäristön ulkopuolella. Varmista, ettei Swift-versiosi ole vanhentunut, sillä vanhemmat Swift-versiot eivät välttämättä toimi Allaksen kanssa.
Luo säilöjä ja lataa objekteja
Luo uusi tyhjä säilö:
Luo uusi säilö ja lisää siihen tiedosto:
Lisää tiedosto olemassa olevaan säilöön:
Huom: Tämä voi laukaista varoituksen "409 Conflict: BucketAlreadyExists", mutta se ei välttämättä tarkoita, että lataus epäonnistui. Jos seuraavalla rivillä näkyy tiedostonimi, tiedosto ladattiin onnistuneesti olemassa olevaan säilöön.$ swift upload my_fishbucket my_fish.jpg
Warning: failed to create container 'my_fishbucket': 409 Conflict: BucketAlreadyExists
my_fish.jpg
Listaa objektit ja säilöt
Listaa kaikki projektiin kuuluvat säilöt:
Listaa säilön sisältö:Lataa objektit ja säilöt
Lataa objekti:
Jos haluat nimetä objektin uudelleen latauksen yhteydessä, voit lisätä -o new_name komennon loppuun: Lataa kokonainen säilö:Siirrä objekteja
Voit kopioida tietoa säilöstä toiseen käyttämällä komentoa swift copy
. Alla oleva komento kopioi file.txt:n bucket1:stä bucket2:een.
$ swift copy --destination /other_bucket my_bigfishes bigfish.jpg
created container other_bucket
my_bigfishes/bigfish.jpg copied to /other_bucket/bigfish.jpg
$ swift list other_bucket
bigfish.jpg
other_file.txt
Nimeä tiedosto uudelleen kopion yhteydessä:
$ swift copy --destination /new_bucket/newname.jpg my_fishbucket my_fish.jpg
created container new_bucket
my_fishbucket/my_fish.jpg copied to /new_bucket/newname.jpg
Lisätietoa komennosta swift copy löydät OpenStackin dokumentaatiosta.
Poista objektit ja säilöt
Poista objekteja ja säilöjä komennolla swift delete
:
Toisin kuin verkkokäyttöliittymässä ja s3cmd:ssä, Swiftillä voit poistaa koko säilön kerralla:
Esimerkiksi:$ swift delete old_fishbucket
old_fish.png
useless_salmon.jpg
too_tiny_bass.jpg
$ swift list old_fishbucket
Container u'old_fishbucket' not found
Lataa tai poista projekteja
Lataa koko projekti:
Poista koko projekti:
Huomio: Ole varovainen tämän komennon kanssa, sillä se poistaa koko projektin sisällön. Varmista ennen tämän komennon käyttöä, ettet tarvitse dataa enää tai että sinulla on siitä kopio.Pseudokansiot ja tarkistussummat
Jos haluat seurata, onko objekti muuttunut, käytä tarkistussummaa komennolla md5sum
.
Pseudokansioita voidaan käsitellä lisäämällä pseudokansion nimi tiedostonimen eteen: my_pseudo_folder_name/my_file
Luo pseudokansio nimeltä pictures säilöön my_bigfishes ja lisää siihen objekti bass.png:
Alla oleva esimerkki lataa tiedoston nimeltä salmon.jpg pseudokansioon nimeltä fishes säilön my_fishbucket sisällä. Tiedosto ladataan sitten.
$ md5sum salmon.jpg
22e44aa2b856e4df892b43c63d15138a salmon.jpg
$ swift upload my_fishbucket/fishes salmon.jpg
fishes/salmon.jpg
$ swift list my_fishbucket
fishes/salmon.jpg
my_fish.jpg
$ swift download my_fishbucket fishes/salmon.jpg -o my_renamed_salmon.jpg
fishes/salmon.jpg [auth 0.664s, headers 0.925s, total 0.969s, 3.605 MB/s]
$ md5sum my_renamed_salmon.jpg
22e44aa2b856e4df892b43c63d15138a my_renamed_salmon.jpg
Metadatan hallinta
Määrittele metatietoja objektille:
Näytä tiedot säilöstä:
$ swift stat my_fishbucket
Account: AUTH_$PROJECT_UUID
Container: my_fishbucket
Objects: 4
Bytes: 2162342
Read ACL:
Write ACL:
Sync To:
Sync Key:
Accept-Ranges: bytes
X-Trans-Id: txUUID-cpouta-production-kaj
X-Storage-Policy: default-placement
X-Container-Bytes-Used-Actual: 1167360
X-Timestamp: 1516776076.95812
Aseta säilö vain luku -tilaan koko maailmalle (tee sisältö näkyväksi URL:lla a3s.fi/bucket_name/object_name) oletustoiminnan (yksityinen projektille) sijaan:
Lisätietoja käyttöoikeuksien hallinnasta löytyy kohdasta Toisen projektin luku- ja kirjoitusoikeuksien antaminen säilöön.
Tarkempia tietoja tiedostosta:
$ swift stat my_fishbucket fishes/salmon.jpg
Account: AUTH_$PROJECT_ID
Container: my_fishbucket
Object: fishes/salmon.jpg
Content Type: image/jpeg
Content Length: 63220
Last Modified: Wed, 24 Jan 2018 10:17:03 GMT
ETag: a38f8db198e3fea43c83c465ffb0283b
Meta S3Cmd-Attrs: atime:1516788402/ctime:1513681753/gid:$LOCALGID/gname:$LOCALGROUP/md5:a38f8db198e3fea43c83c465ffb0283b/mode:33188/mtime:1513681747/uid:$LOCALUID/uname:$LOCALUSER
Accept-Ranges: bytes
X-Timestamp: 1516789023.84380
X-Trans-Id: tx0000000000000000001d6-q-q-cpouta-production-kaj
Huomaa, että yllä oleva tiedosto ladattiin s3cmd-asiakkaan avulla, ja siksi siinä on lisämetatietoa S3Cmd-Attrs verrattuna tiedostoon, joka on ladattu Swiftillä tai S3:lla. ETag on hash, kun tarkastelet tiedostotietoja Pouta-hallintapaneelissa.
Toisen projektin luku- ja kirjoitusoikeuksien antaminen säilöön
Anna projektille project1 lukuoikeudet säilöön my_fishbucket:
Kirjoitusoikeudet voidaan antaa samalla tavalla korvaamalla -r (read) -w:llä (write):
Merkki * projektin nimen jälkeen määrittelee, että kaikki projektin jäsenet saavat oikeudet.
Vaihtoehtoisesti voit antaa luku- ja kirjoitusoikeudet vain tietyille toisen projektin jäsenille:
swift post my_fishbucket -r "project2:member1"
swift post my_fishbucket -w \
"project3:member1,project3:member2,project5:member1,project6:*"
Huomio: Jos olet myöntänyt pääsyn tietyille projekteille, jaat projektin julkiseksi ja muutat sen sitten jälleen yksityiseksi, kaikki aiemmat käyttöoikeudet poistetaan.
Jos annat -w käyttöoikeuden toiselle projektille, toisen projektin jäsenet voivat ladata tiedostoja säilöösi ja poistaa tiedostojasi. Sinulla ei kuitenkaan ole pääsyä ladattuihin tiedostoihin, ennen kuin joko sinä tai lähettäjä jakaa säilön projektillesi:
Esimerkiksi:
Vaihtoehtoisesti voit asettaa projektin julkiseksi ja sitten käyttää tiedostoa.
Yli 5 GB:n tiedostot
Swiftillä on yksittäisen objektin kokorajoitus 5 GiB. Jotta voisit ladata tätä suurempia tiedostoja, sinun on luotava suuri objekti, joka koostuu pienemmistä segmenteistä. Tämän saavuttamiseksi voit käyttää Swiftiä ladataksesi niin kutsutun Static Large Object:n (SLO).
Kokeile ladata suuri tiedosto:
$ md5sum /tmp/6GB.zero
9e6a77a2d5650b2e2a710a08e9e61a81 /tmp/6GB.zero
$ stat /tmp/6GB.zero
File: '/tmp/6GB.zero'
Size: 6424625152 Blocks: 12548104 IO Block: 4096 regular file
...
$ swift upload my_bigfishes /tmp/6GB.zero
Object PUT failed: https://a3s.fi:443/swift/v1/my_bigfishes/tmp/6GB.zero 400 Bad Request EntityTooLarge
Se epäonnistuu viestillä EntityTooLarge
, joten sen sijaan:
$ swift upload my_bigfishes --use-slo --segment-size 1G /tmp/6GB.zero
tmp/6GB.zero segment 3
tmp/6GB.zero segment 5
tmp/6GB.zero segment 1
tmp/6GB.zero segment 0
tmp/6GB.zero segment 4
tmp/6GB.zero segment 2
tmp/6GB.zero
Tämä luo uuden säilön:
Tässä tapauksessa kohdesäilö (my_bigfishes) sisältää vain etuobjektin, joka sisältää tiedon siitä, mitkä segmentit, tallennettuna segmenttien säilössä (my_bigfishes_segments), muodostavat tallennetun tiedoston. Etuobjektille tehdyt toiminnot heijastuvat automaattisesti segmentteihin. Yleensä käyttäjien ei tarvitse käsitellä segmenttisäilöitä lainkaan, eikä näiden säilöjen objekteja pitäisi poistaa tai muokata.
Lataa koko 6GB.zero:
```text $ swift download my_bigfishes tmp/6GB.zero -o /tmp/6GB.zero tmp/6GB.zero [auth 0.594s, headers 0.881s, total 74.467s, 86.969 MB/s] $ md5sum 6GB.zero 9e6a77a2d5650b2e2a710a08e9e61a81 6GB.zero