簡體   English   中英

過濾容器機架CDN中的文件

[英]filtering files in container rackspace cdn

我正在嘗試為cloudfiles(使用Rackspace)編寫備份腳本,該腳本僅復制自上次備份以來修改的文件。

有沒有一種方法可以查詢自特定時間以來已修改的列表文件? (使用PHP)

注意:使用php-opencloud庫。

目前,我還沒有找到一種基於上次修改日期進行查詢/過濾的方法。

您可以做的是查看容器中每個對象的元數據。 在低級別上,這僅需要對每個對象執行HEAD操作。 盡管這可能需要您檢查每個對象,但您只是抓住標題而沒有下載每個對象。

對對象執行HEAD操作時, 最后修改日期在HTTP標頭中

HEAD /<api version>/<account>/<container>/<object> HTTP/1.1
Host: storage.clouddrive.com
X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb

沒有返回響應主體,但是HTTP標頭包含多汁的詳細信息:

HTTP/1.1 200 OK
Date: Thu, 07 Jun 2007 20:59:39 GMT
Last-Modified: Fri, 12 Jun 2007 13:40:18 GMT
ETag: 8a964ee2a5e88be344f36c22562a6486
Content-Length: 512000
Content-Type: text/plain; charset=UTF-8
X-Object-Meta-Meat: Bacon

PHP庫中有一個名為fetch的方法,該方法只能獲取對象的標頭 ,但它是私有的,我看不到它在任何地方都在使用。 這看起來像是在GitHub上引發問題或自行創建PR的事情。

現在,您可以獲取每個對象並自己拉出標題:

$obj = $container->DataObject();
$headers = $obj->metadataHeaders();
$headers["Last-Modified"]

抱歉,這無法完全解決問題。 我直接對其中一個PHP開發人員執行了ping操作,希望如果這種方法無法解決,我們將找到另一個選擇。

嘗試使用glob()filemtime()

例:

$lastBackupTime = 1234567890; //You'll have to figure out how to store and retrieve this
$modified = array();

// Change the input of glob() to use the directory and file extension you're looking for
foreach (glob('/some/directory/*.txt') as $file) {
    if (filemtime($file) > $lastBackupTime) {
        $modified[] = $file;
    }
}

foreach ($modified as $file) {
    //do something
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM