# 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"