2010-08-04 7 views
8

간단하게 들리지만 매우 복잡한 작업처럼 보입니다.S3에서 버킷의 폴더 이름을 어떻게 바꿉니 까?

+0

@ 존, 편집 한 사항이 있다면 무엇을해야합니까? – Trip

+0

Windows 용 CloudBerry가 작동합니다. 하지만 창문이 싫어. 누구든지 맥을 알고 있나요? – Trip

+0

나는 이것을 할 수있는 스크립트를 가지고있다 - 나를 이메일로 보낸다. (longtailvideo dot com에서의 zach) 나는 그것을 따라 보낼 것이다. –

답변

11

aws-s3 gem을 사용하는 경우 다음 코드는 BUCKET_NAME 버킷의 OLD_FOLDER_NAME 폴더를 NEW_FOLDER_NAME (으)로 이름을 바꿉니다.

bsize = OLD_FOLDER_NAME.size 
bucket = AWS::S3::Bucket.find(BUCKET_NAME) 
bucket.objects({:prefix=>OLD_FOLDER_NAME}).each do |o| 
    AWS::S3::S3Object.rename(o.key, NEW_FOLDER_NAME + o.key[bsize..-1], BUCKET_NAME) 
end 

그게 전부입니다. 폴더는 실제 객체가 아니므로 특정 경로에서 끝나는 모든 객체의 이름을 새 경로로 변경하면됩니다. 결과적으로 가상 폴더의 이름이 바뀝니다.

+0

이렇게하면 폴더의 이름이 바뀌지 만 폴더의 내용이 공용 인 경우 이름을 바꾸는 동안 해당 권한이 손실 된 것처럼 보입니다. – jpwynn

+0

rename()에 네 번째 매개 변수로 명시 적 권한을 추가하면 사용 권한이 설정됩니다. access => : public_read 아마도 이름 바꾸기 중에 사용 권한을 유지할 수있는 몇 가지 방법이 있지만 – jpwynn

1

사용 BucketExplorer! 이것은 훌륭한 응용 프로그램입니다! 매우 이해하기 쉬운 s3에서 할 수있는 일은 거의 할 수 있습니다.

+0

솔직히 말해서, 나는 아직 아이디어가 열려 있지만 이것이 내가 찾은 최선의 선택이었다. – Trip

+0

이 솔루션은 Java7을 설치해야하기 때문에 폴더의 이름을 변경하기 위해 시스템 수준의 변경 사항이 많이 발생할 수 있다는 사실에 동의하지 않았습니다. 너무 나쁜 그들은 자바 의존성의 거대한 두통없이 '진짜'앱으로 다시 쓰지 않는다. – jpwynn

8

AWS Command Line Interface 과 같은 것으로 보이는 새로운 방법입니다. 그것을 사용하면 다음과 같이 폴더 이름을 바꿀 수 있습니다 :

aws s3 mv --recursive s3://bucketname/oldfoldername s3://bucketname/newfoldername 

확인하고 당신이 그것을 할 것 같아 무엇을 할 것인가 확인하기 위해 --dryrun 옵션과 함께 시작합니다.

1

S3 관리 콘솔을 사용하는 경우 잘라내어 붙여 넣을 수 있습니다. 원하는 폴더로 이동하여 Ctrl + A를 클릭 한 다음 작업> 잘라내기를 클릭하십시오. 새 폴더를 만들고 작업> 붙여 넣기를 클릭하십시오.

관련 문제