1
amazon-s3의 php sdk에서 동기화 및 복사 옵션을 찾을 수 없습니다. 현재 나는 aws s3 cp/sync CLI 명령어를 PHP 코드 내에서 사용하고 있습니다.이 코드는 나에게 매우 깔끔하게 보이지 않습니다. 어떤 아이디어?PHP : CLI를 사용하지 않고 PHP 코드를 사용하여 s3 버킷간에 데이터를 동기화하는 방법.
amazon-s3의 php sdk에서 동기화 및 복사 옵션을 찾을 수 없습니다. 현재 나는 aws s3 cp/sync CLI 명령어를 PHP 코드 내에서 사용하고 있습니다.이 코드는 나에게 매우 깔끔하게 보이지 않습니다. 어떤 아이디어?PHP : CLI를 사용하지 않고 PHP 코드를 사용하여 s3 버킷간에 데이터를 동기화하는 방법.
PHP SDK의 두 가지 기능을 조합하여이 작업을 수행 할 수 있습니다.
먼저 S3Client::uploadDirectory()
방법을 확인하십시오 (user guide 참조). 이 같은 잠시 디렉토리의 내용을 업로드 할 수 있습니다 :
$s3Client->uploadDirectory('/local/directory', 'your-bucket-name');
당신이 S3 Stream Wrapper과이 결합하면, 대신 소스로 로컬 디렉토리를 사용하여, 당신은 양동이를 지정할 수 있습니다. 당신이 uploadDirectory()
을하고있는 것보다는 스트림 래퍼에 대해 다르게 구성 S3Client
개체를 사용하는 경우에도 지역에 걸쳐 일을 할 수 있기 때문에
$s3Client->registerStreamWrapper();
$s3Client->uploadDirectory('s3://your-other-bucket-name', 'your-bucket-name');
이 꽤 강력하다.
Jeremy에게 감사드립니다. 그것은 매력처럼 작동합니다. 유일한 문제는 php.ini 파일의 시간대 정보가 없어 치명적인 오류입니다. 시간대 정보를 추가하면 제대로 작동합니다. 참조 : http://stackoverflow.com/questions/16765158/date-it-is-not-safe-to-rely-on-the-systems-timezone-settings-in-codeigniter 한 가지 질문. CLI 도구만큼이나 효율적입니까? –
확실하지 않습니다. 네가 직접 시험 해봐야 할 것 같아. –
aws cli 클라이언트를 사용하여 500k 개 이상의 오브젝트를 복사하려고했습니다. 그것은 많은 개체를 놓친 또한 ACL 권한을 복사하지 않았다. 위의 방법을 시도하면 이제 다시보고됩니다. –