2017-08-29 100 views
0

我正在運行標準cron作業,每天晚上將我的GAE數據存儲備份到Google存儲桶。我已經添加的代碼在桶整理這件事,並刪除舊的備份,因爲我只需要備份的最後一週:自動整理GAE cron備份

GcsService gcsService = GcsServiceFactory.createGcsService(); 

    // Today, and 3 days before date 
    Date today = new Date(); 
    Date Lastweek = new Date(); 
    Long LastweekMS = today.getTime() - (7*24*60*60*1000); 
    Lastweek.setTime(LastweekMS); 

    try{ 
     ListResult list = gcsService.list(bucket, new ListOptions.Builder().setRecursive(true).build()); 

     while(list.hasNext()){ 
      ListItem item = list.next(); 
      if(item.getLastModified().after(Lastweek) == false) 
      { 
       gcsService.delete(new GcsFilename(bucket, item.getName())); 
      } 
     } 
    } 

這個工程非常漂亮。但是,是否有API還可以刪除數據存儲管理中的條目。雖然他們不花我任何東西,但我寧願讓它們與存儲桶中的內容相匹配。 (我不想使用GUI :-)

感謝 添作數據存儲備份

回答

2

狀態信息被存儲在數據存儲本身的實體。

已完成作業,你可以刪除與查詢匹配的實體:

SELECT * FROM _AE_DatastoreAdmin_Operation 
WHERE status = "Completed" 
AND last_updated < DATETIME("YYYY-MM-DDThh:mm:ss.SSSSSS+zz:ZZ") 

注意的是,爲了運行查詢,則需要首先創建的種類的索引:

indexes: 
- kind: _AE_DatastoreAdmin_Operation 
    ancestor: no 
    properties: 
    - name: status 
    - name: last_updated 
    direction: desc 

而且,作爲使用AE cron的替代方法,您可以使用GCS的生命週期管理自動刪除N天以前的對象:https://cloud.google.com/storage/docs/lifecycle