2012-08-11 70 views
2

我正在編寫一個rake任務來從S3中存儲的.tar.gz備份文件中恢復數據庫。Right_aws從S3獲取.tar.gz

第1步,從S3下載文件,對吧?我正在使用right_aws's S3Interface。 我試過簡單的get,它返回文件內容:object。

obj = s3.get(s3_config[:s3_bucket], s3_file_name) 
temp_file.write obj[:object] 

錯誤: 耙中止! 「\ x8B」從ASCII-8BIT到UTF-8

我看到一些關於使用GzipWriter和String#解壓但是無法成功應用它們的文章。

回答

6

使用'wb'標誌打開文件有竅門。

temp_file = File.new(File.join(tmp_dir, 'temp.tar.gz'), 'wb') 
    obj = s3.get(s3_config[:s3_bucket], s3_file_name) 
    temp_file.write obj[:object] 
    temp_file.close 
+0

謝謝!!!這真的讓我難住。 – 2013-04-08 07:34:51

+0

很高興幫助過某人:) – septerr 2013-04-08 14:31:52

+0

我想回到我生命的最後一刻。我所需要的只是'wb'不''w'!謝謝! – mharper 2017-11-01 19:30:29