ビデオファイルストレージをAWSS3に移動する必要があります。古い場所はcdnであるため、各ファイルのURLしかありません(1000以上のファイル、> 1TBの合計ファイルサイズ)。ストレージサーバーで直接アップロードツールを実行することはできません。
私はすでにファイルをダウンロードし、ファイルをS3バケットにアップロードし、DBレコードを新しいHTTP URLで更新し、永久にかかることを除いて完全に機能するツールを作成しました。
ファイルのダウンロードには時間がかかり(各ファイルがギガバイトに近いことを考慮すると)、アップロードには時間がかかります。
ビデオファイルをcdnからS3に直接アップロードして、処理時間を半分に短縮することはできますか?ファイルのチャンクを読み取り、次のチャンクを読み取りながらS3に配置するようなものです。
現在、System.Net.WebClientを使用してファイルをダウンロードし、AWSSDKを使用してアップロードしています。
PS:インターネットの速度に問題はありません。1GBitのネットワーク接続を備えたサーバーでアプリを実行しています。
これはこの質問で私が答えました、ここに要点があります:
obj = Aws::S3::Object.new(bucket_name: 'target-bucket', key: 'target-key')
obj.upload_stream do |write_stream|
IO.copy_stream(URI.open('http://example.com/file.ext'), write_stream))
end
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加