So에서 이전 버전 복원. 나는 바보 야. 필자는 금요일에 양동이에 프로그래밍 방식으로 약 14,000 개의 파일을 덮어 썼다. 운좋게도 파일의 버전이 변경되었습니다. 불행히도 파일을 통과하는 스크립트를 작성하는 방법에 대한 명확한 예를 찾지 못하고 두 번째로 최신 버전을 복원합니다. 나는 Boto 문서를 읽었으며 버전을 삭제하는 방법을 알고 있지만 복원하지는 않습니다. 만약 누군가 특정 버전을 복원하는 방법을 보여주는 약간의 코드를 줄 수있는 php 또는 python을 사용하여 편안 해요.Mass Amazon의 S3
3
A
답변
4
이것은 사용자가주의해야 할 부분입니다. 철저히 테스트 할 시간이 없기 때문에 나는 완벽한 솔루션을 제공하려고하지 않으며 어떤 약속도하고 싶지 않습니다.
그러나 아마도 도움이 될 것입니다.
먼저, boto의 특정 버킷에서 특정 키의 모든 버전을 찾고자합니다. 우리는 다음과 같은 것을 할 수있는 :
mykey TyvPH4UUD4zRnGhmmLH6HGHOcOnsJgQG 2013-03-03T19:10:39.000Z
mykey IxNYlmoyDsOSspR6SwuGVNM7Nr83ZTSI 2013-03-03T15:11:06.000Z
mykey XVI9_yxQYU6B2KXQv0VLj7luYOGwWCoh 2013-03-03T15:10:55.000Z
mykey qh0zjxWjRC8WvXQc_RmvVdCJ.S3gF2ui 2013-03-03T15:07:46.000Z
이의 우리가 가장 오래된 파일을 "복원"할 것을 가정 해 봅시다 :
import boto
conn = boto.connect_s3()
bucket_name = 'mybucket'
key_name = 'mykey'
bucket = conn.lookup(bucket_name)
for k in bucket.list_versions(key_name):
print(k.name, k.version_id, k.last_modified)
이 이런 식으로 뭔가를 인쇄해야합니다. 그렇게하기 위해, 우리는 실제로 객체의 원하는 버전을 스스로 복사합니다. boto에서는 다음과 같이 표시됩니다.
bucket.copy_key(new_key_name=key_name, src_bucket_name=bucket_name, src_key_name=key_name, src_version_id='qh0zjxWjRC8WvXQc_RmvVdCJ.S3gF2ui')
이렇게하면 지정한 버킷 버전이 동일한 버킷에 다시 복사됩니다.
나는 이것을 조금 탐험해야하고 스크립트를 풀어 놓기 전에 많은 테스트를해야 할 것이라고 생각한다. 예를 들어 원하는 버전의 객체를 다른 버킷에 복사하고 원하는 버킷에 복사하기 전에 원하는 것을 얻는 지 확인할 수 있습니다.
희망이 도움이됩니다.
꽤 도움이되었습니다. 고맙습니다. –