您的位置:首页 > 移动开发 > Swift

用curl 进行 swift操作

2013-12-27 16:47 274 查看
# create 101 containers

for((i=100; i<=200;i++)) do swift post c${i}; done

#auth

curl -d '{"auth": {"tenantName": "test", "passwordCredentials":{"username": "tester", "password": "testing"}}}' -H "Content-type: application/json" http://192.168.26.69:5000/v2.0/tokens
export STORAGE_URL=http://192.168.26.69:8080/v1/AUTH_3e2a0a2df18b4f86a52e2dc6ad3cb989

export TOKEN_ID=61262d00da1d4370b8b2b80355f2b5cb

#LIST CONTAINERS The system returns a maximum of 10,000 container names per request.

#Controlling a Large List of Containers,-v to show detail data.

curl -H "X-Auth-Token:${TOKEN_ID}" ${STORAGE_URL}

#LIST CONTAINERS,only show the first Nth container

curl -H "X-Auth-Token:${TOKEN_ID}" ${STORAGE_URL}?limit=10

curl -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}?limit=10&marker=c1"

curl -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}?limit=10&marker=c1&end_marker=c105"

### ACCOUNT METADATA

curl --head -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}"

#CREATE ACCOUNT METADATA

curl -d '' -H "X-Auth-Token:${TOKEN_ID}" -H "X-Account-Meta-Book: MobyDick" "${STORAGE_URL}"

curl --head -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}"

#MODIFY METADATA

curl -d '' -H "X-Auth-Token:${TOKEN_ID}" -H "X-Account-Meta-Book: zzDick" "${STORAGE_URL}"

#Delete Account Metadata

#METHOD 1,SET NULL VALUE

curl -d '' -H "X-Auth-Token:${TOKEN_ID}" -H "X-Account-Meta-Book:" "${STORAGE_URL}"

# older versions of cURL, does not support empty headers

curl -d '' -H "X-Auth-Token:${TOKEN_ID}" -H "X-Remove-Account-Meta-Book:anyvalue" "${STORAGE_URL}"

#STORAGE CONTAINER SERVICE

#list objects in container. The system returns a maximum of 10,000 object names per request

curl -H "X-Auth-Token:${TOKEN_ID}" ${STORAGE_URL}/myfiles1

curl -H "X-Auth-Token:${TOKEN_ID}" ${STORAGE_URL}/myfiles1?format=xml

curl -H "X-Auth-Token:${TOKEN_ID}" ${STORAGE_URL}/myfiles1?format=json

curl -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/myfiles1?limit=10&marker=swift/conf/ntp.sh&end_marker=swift/conf/restartProxy.sh"

#Pseudo-Hierarchical Folders and Directories

curl -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/myfiles1?prefix=swift/conf/&delimiter=/"

curl -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/myfiles1?prefix=swift/bin/&delimiter=/"

curl -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/myfiles1?prefix=swift/&delimiter=/"

#Create Container

curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer"

# The custom metadata is assigned to a container via HTTP headers identified with the X-Container-Meta- prefix. Can not

#curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" -H " X-Container-Meta-Book: MobyDick" "${STORAGE_URL}/testContainer2"

# Get Container Metadata

curl --head -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer"

#Create or Update Container Metadata.They must, however, take the format X-Container-Meta-.

curl -d '' -H "X-Auth-Token:${TOKEN_ID}" -H "X-Container-Meta-Book: MobyDick" "${STORAGE_URL}/testContainer"

# Delete Container Metadata

curl -d '' -H "X-Auth-Token:${TOKEN_ID}" -H "X-Remove-Container-Meta-Book: anyvalue" "${STORAGE_URL}/testContainer"

#Delete Container

curl -X DELETE -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer"

#Create Static Website

swift post -r '.r:*' myfiles1

###Storage Object Services

#An object represents the data and metadata for the files stored in the system. Through the ReST interface, you can include metadata for an object by adding custom HTTP headers to the request and the data payload as the request body. Objects cannot exceed 5
GB and must have names that do not exceed 1024 bytes after URL encoding. However, you can segment a large object into 5 GB segments and upload the segments. Then, you can download the segments as a single concatenated object. You can use HTTP requests to work
with the segments and manifests directly.

#You can ensure end-to-end data integrity by including an MD5 checksum of your object's data in the ETag header. You are not required to include the ETag header, but it is recommended to ensure that the storage system successfully stored your object's content.

curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer/cookie.txt1" -T cookie.txt

curl -H "X-Auth-Token:${TOKEN_ID}" ${STORAGE_URL}/testContainer

#get object

curl -H "X-Auth-Token:${TOKEN_ID}" ${STORAGE_URL}/testContainer/cookie.txt1

#Get object by range

curl -H "X-Auth-Token:${TOKEN_ID}" -H "Range:bytes=10-100" ${STORAGE_URL}/testContainer/cookie.txt1

#Get object using multiple range

curl -H "X-Auth-Token:${TOKEN_ID}" -H "Range:bytes=10-100,20-120" ${STORAGE_URL}/testContainer/cookie.txt1

curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" -H "X-Object-Meta-PIN:1234" "${STORAGE_URL}/testContainer/addDisk.sh" -T addDisk.sh

curl --head -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer/cookie.txt1"

curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" -H "Transfer-Encoding:chunked" -H "X-Object-Meta-PIN:1234" "${STORAGE_URL}/testContainer/OpenOffice.tar.gz" -T ~/software/Apache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-rpm_zh-CN.tar.gz

##Create Large Objects

#If you use the COPY operation using a manifest object as the source, the new object is a "normal" object (not segmented). If the total size of the source segment objects exceeds 5 GB, the COPY operation fails. However, as explained later, you can make a duplicate
of the manifest object. This new object can be larger than 5 GB.

#split file

split --bytes=10m tpch-dbgen.tar.gz tpch-dbgen/tpch-dbgen-part

curl -i -X PUT -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer/tpch-dbgen/tpch-dbgen-partaa" -T tpch-dbgen/tpch-dbgen-partaa

#Etag: 6d74b166df2b7d16938a2411d6657d75 Content-Length: 10485760

curl -i -X PUT -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer/tpch-dbgen/tpch-dbgen-partab" -T tpch-dbgen/tpch-dbgen-partab

#< Etag: e463bf72a0ceaf4546e4078513097a24 Content-Length: 10485760

curl -i -X PUT -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer/tpch-dbgen/tpch-dbgen-partac" -T tpch-dbgen/tpch-dbgen-partac

#> Content-Length: 2695694 < Etag: d09f5411a63bdc37496a315e2de9bb87

#Dynamic Manifest

curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" -H "X-Object-Manifest:testContainer/tpch-dbgen/tpch-dbgen-part" -H "Content-Length: 0" "${STORAGE_URL}/testContainer/tpch-dbgen.tar.gz"

#mdir temp

#cd temp

swift download testContainer tpch-dbgen.tar.gz

curl -v -X PUT -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer/tpch-dbgen/tpch-dbgen-partad" -T ../tpch-dbgen/tpch-dbgen-partaa

#Etag: 6d74b166df2b7d16938a2411d6657d75 Content-Length: 10485760

swift stat testContainer tpch-dbgen.tar.gz

Account: AUTH_3e2a0a2df18b4f86a52e2dc6ad3cb989

Container: testContainer

Object: tpch-dbgen.tar.gz

Content Type: application/x-tar

Content Length: 34152974

Last Modified: Fri, 27 Dec 2013 02:38:45 GMT

ETag: "f53d39a009217117400e583845d95b9d"

Manifest: testContainer/tpch-dbgen/tpch-dbgen-part

Accept-Ranges: bytes

X-Timestamp: 1388108777.24155

swift delete testContainer tpch-dbgen/tpch-dbgen-partad

#static large file

cat > manifest.json << EOF

[

{"path": "/testContainer/tpch-dbgen/tpch-dbgen-partaa","etag": "6d74b166df2b7d16938a2411d6657d75","size_bytes": 10485760},

{"path": "/testContainer/tpch-dbgen/tpch-dbgen-partab","etag": "e463bf72a0ceaf4546e4078513097a24","size_bytes": 10485760},

{"path": "/testContainer/tpch-dbgen/tpch-dbgen-partac","etag": "d09f5411a63bdc37496a315e2de9bb87","size_bytes": 2695694}

]

EOF

swift delete testContainer tpch-dbgen.tar.gz

curl -X PUT -i -H "X-Auth-Token:${TOKEN_ID}" -H "X-static-Large-Object: True" -T ./manifest.json "${STORAGE_URL}/testContainer/tpch-dbgen.tar.gz?multipart-manifest=put"

#Object DeleteAt

#curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" -H "X-Delete-After: 100" -H "Content-Length: 316" "${STORAGE_URL}/testContainer/cookie.txt"

curl -v -X PUT -H "X-Auth-Token:${TOKEN_ID}" -H "X-Delete-After: 100" "${STORAGE_URL}/testContainer/install.sh" -T install.sh

--swift list testContainer ,还是能看到文件,只是下载不了.

#create container for older version objects

vim container-server.conf

[app:container-server]

use = egg:swift#container

allow_versions = true

curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/olderContainer"

#create new container for current version objects.

curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" -H "X-Versions_Location: olderContainer" "${STORAGE_URL}/currContainer"

curl --head -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/currContainer"

curl -X PUT -i -H "X-Auth-Token:${TOKEN_ID}" -T ./cookie.txt "${STORAGE_URL}/currContainer/cookie.txt"

curl -i -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/olderContainer"

curl -X DELETE -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/currContainer/cookie.txt"

curl -i -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/currContainer"

curl -i -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/olderContainer"

# Copy Object

curl -X PUT -H "X-Auth-Token:${TOKEN_ID}" -H "Content-Length: 0" -H "X-Copy-From:/currContainer/cookie.txt" "${STORAGE_URL}/testContainer/cookie.txt2"

#Delete Object

curl -X DELETE -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer/cookie.txt"

#Get Object MetaData

curl --head -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer/install.sh"

#Update Object Metadata

curl -X POST -d '' -H "X-Object-Meta-updater: houzhizhen" -H "X-Auth-Token:${TOKEN_ID}" "${STORAGE_URL}/testContainer/install.sh"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: