-
Allas-asiakasohjelmat
-
Swift
Swift-asiakasohjelma
Pythonin Swift-asiakasohjelma on komentorivityökalu oliotallennusjärjestelmien, kuten Allaksen, käyttöön. Jos käytät Allasta Puhdissa tai Mahdissa, kaikki tarvittavat paketit ja ohjelmistot on jo asennettu.
Avaa yhteys Altaaseen:Katso lisätietoja ja lisävalintoja kohdasta allas-conf.
Tämä luku sisältää ohjeet seuraaviin toimintoihin:
| Swift-komento | Toiminto |
|---|---|
| post | Luo ämpäri |
| upload | Lataa palveluun objekti |
| list | Listaa objektit ja ämpärit |
| download | Lataa objektit ja ämpärit |
| copy | Siirrä objekti |
| delete | Poista objektit tai ämpäri |
| download --all | Lataa koko projekti |
| delete --all | Poista koko projekti |
| md5sum | Hae tarkistussumma |
| stat | Näytä metadata |
| stat --meta | Lisää metadataa |
| tempurl | Luo väliaikainen URL |
| post -r, -w, --read-acl | Hallitse käyttöoikeuksia |
| upload --use-slo | Lataa palveluun yli 5 GB:n tiedostoja |
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 ämpäreitä ja lataa objekteja palveluun
Luo uusi tyhjä ämpäri:
Luo uusi ämpäri ja lisää siihen tiedosto:
Lisää tiedosto olemassa olevaan ämpäriin:
Huom: Tämä voi aiheuttaa varoituksen "409 Conflict: BucketAlreadyExists", mutta se ei välttämättä tarkoita, että lataus palveluun epäonnistui. Jos seuraavalla rivillä näkyy tiedoston nimi, tiedosto ladattiin onnistuneesti olemassa olevaan ämpäriin.$ swift upload my_fishbucket my_fish.jpg
Warning: failed to create container 'my_fishbucket': 409 Conflict: BucketAlreadyExists
my_fish.jpg
Listaa objektit ja ämpärit
Listaa kaikki projektiin kuuluvat ämpärit:
Listaa ämpärin sisältö:Lataa objekteja ja ämpäreitä
Lataa objekti:
Jos haluat nimetä objektin uudelleen latauksen yhteydessä, voit lisätä komennon loppuun -o new_name: Lataa kokonainen ämpäri:Siirrä objekteja
Voit kopioida dataa ämpäristä toiseen komennolla swift copy. Alla oleva komento kopioi tiedoston file.txt ämpäristä bucket1 ämpäriin bucket2.
$ 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 kopioinnin 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ätietoja komennosta swift copy on OpenStackin dokumentaatiossa.
Poista objekteja ja ämpäreitä
Poista objekteja ja ämpäreitä komennolla swift delete:
Toisin kuin selainkäyttöliittymässä ja s3cmd:ssä, Swiftillä voit poistaa kokonaisen ämpärin 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:
Huomaa: Ole varovainen tämän komennon kanssa, sillä se poistaa projektin koko sisällön. Varmista ennen tämän komennon käyttöä, ettet enää tarvitse dataa tai että sinulla on siitä kopio.Näennäiskansiot ja tarkistussummat
Jos haluat tarkkailla, onko objekti muuttunut, käytä tarkistussummaa komennolla md5sum.
Näennäiskansioita voidaan käsitellä lisäämällä näennäiskansion nimi tiedostonimen eteen: my_pseudo_folder_name/my_file
Luo pictures-niminen näennäiskansio ämpäriin my_bigfishes ja lisää siihen objekti bass.png:
Alla olevassa esimerkissä tiedosto nimeltä salmon.jpg ladataan palveluun fishes-nimiseen näennäiskansioon ämpärin my_fishbucket sisällä. Tiedosto ladataan sitten palvelusta.
$ 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ääritä objektille metadata:
Näytä ämpärin tiedot:
$ 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 ämpäri maailmanlaajuisesti vain luku -tilaan (tee sisältö näkyväksi URL-osoitteessa: a3s.fi/bucket_name/object_name) oletusasetuksen (projektille yksityinen) sijaan:
Lisätietoja käyttöoikeuksien hallinnasta on kohdassa Anna toiselle projektille luku- ja kirjoitusoikeus ämpäriin.
Lisää tiedoston tietoja:
$ 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 palveluun s3cmd-asiakasohjelmalla, ja siksi siinä on lisämetadata S3Cmd-Attrs verrattuna tiedostoon, joka on ladattu palveluun Swiftillä tai S3:lla. ETag on hash, kun tarkastelet tiedoston tietoja Poudan hallintapaneelissa.
Anna toiselle projektille luku- ja kirjoitusoikeus ämpäriin
Anna projektille project1 lukuoikeus ämpäriin my_fishbucket:
Kirjoitusoikeus voidaan antaa vastaavasti korvaamalla -r (read) parametrilla -w (write):
Projektin nimen jälkeinen merkki * määrittää, että kaikki projektin jäsenet saavat oikeudet.
Vaihtoehtoisesti voit antaa luku- ja kirjoitusoikeuden 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:*"
Huomaa: Jos olet myöntänyt käyttöoikeuksia tietyille projekteille, jaettu projekti julkiseksi ja sitten uudelleen yksityiseksi asettaminen poistaa aiemmat käyttöoikeudet.
Jos annat toiselle projektille -w-oikeuden, toisen projektin jäsenet voivat ladata tiedostoja palveluun ämpäriisi ja poistaa tiedostojasi. Sinulla ei kuitenkaan ole pääsyä ladattuihin tiedostoihin, ennen kuin joko sinä tai lähettäjä jakaa ämpärin projektillesi:
Esimerkiksi:
Vaihtoehtoisesti voit asettaa projektin julkiseksi ja käyttää sitten tiedostoa.
Yli 5 GB:n tiedostot
Swiftin yksittäisen objektin kokoraja on 5 GiB. Jotta voit ladata tätä suurempia tiedostoja palveluun, sinun on luotava suuri objekti, joka koostuu pienemmistä segmenteistä. Tähän voit käyttää Swiftiä niin sanotun Static Large Objectin (SLO) lataamiseen palveluun.
Yritä ladata suuri tiedosto palveluun:
$ 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 käytä 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 ämpärin:
Tässä tapauksessa kohdeämpäri (my_bigfishes) sisältää vain edustaobjektin, joka sisältää tiedon siitä, mitkä segmentit segmenttiämpärissä (my_bigfishes_segments) muodostavat tallennetun tiedoston. Edustaobjektiin kohdistetut toiminnot heijastuvat automaattisesti segmentteihin. Tavallisesti käyttäjien ei tarvitse käsitellä segmenttiämpäreitä lainkaan, eikä näiden ämpäreiden sisällä olevia objekteja pidä poistaa tai muokata.
Lataa koko 6GB.zero palvelusta: