日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

如何主動(dòng)觸發(fā)特定文件夾的反向同步

本文介紹如何通過云存儲(chǔ)網(wǎng)關(guān)主動(dòng)觸發(fā)特定文件夾的反向同步。

前提條件

已創(chuàng)建共享。具體操作,請(qǐng)參見創(chuàng)建共享

操作步驟

您可以通過調(diào)用TriggerGatewayRemoteSyncRequest接口來實(shí)現(xiàn)主動(dòng)觸發(fā)特定文件夾的反向同步。

說明

云存儲(chǔ)網(wǎng)關(guān)Python SDK兼容Python2和Python3,下文以Python3版本為例具體說明。

  1. 安裝Python SDK。

    pip install aliyun-python-sdk-core
    pip install aliyun-python-sdk-sgw
  2. 主動(dòng)觸發(fā)特定文件夾的反向同步,完整代碼如下所示,您可以自行根據(jù)實(shí)際情況修改代碼內(nèi)容。

    #!/usr/bin/env python3
    
    from aliyunsdkcore.client import AcsClient
    from aliyunsdksgw.request.v20180511 import TriggerGatewayRemoteSyncRequest
    
    def trigger_gateway_remote_sync():
        # 阿里云賬號(hào)AccessKey擁有所有API的訪問權(quán)限,風(fēng)險(xiǎn)很高。強(qiáng)烈建議您創(chuàng)建并使用RAM用戶進(jìn)行API訪問或日常運(yùn)維,請(qǐng)登錄RAM控制臺(tái)創(chuàng)建RAM用戶。
        # AccessKey ID和AccessKey Secret是RAM用戶訪問阿里云ECS服務(wù)API的密鑰,具有該賬戶完全的權(quán)限,請(qǐng)妥善保管,避免泄露。
        # 將<AccessKey ID>、<AccessKey Secret>變量替換為您的阿里云賬號(hào)對(duì)應(yīng)的AccessKey ID以及AccessKey Secret。
        # 將<RegionId>變量替換為您正在使用的網(wǎng)關(guān)實(shí)例所屬的地域ID。
        client = AcsClient('<AccessKey ID>', '<AccessKey Secret>', '<RegionId>')
       # 調(diào)用TriggerGatewayRemoteSyncRequest接口觸發(fā)主動(dòng)反向同步。
        request =TriggerGatewayRemoteSyncRequest.TriggerGatewayRemoteSyncRequest()
        request.set_GatewayId("<Gateway Id>")
        request.set_IndexId("<Index Id>")
        request.set_Path("<Path>") 
        result = client.do_action_with_exception(request)
        print(result)
    
    if __name__ == "__main__":
        trigger_gateway_remote_sync()
                            

    重要參數(shù)說明如下:

    說明
    • Gateway Id是需要觸發(fā)主動(dòng)反向同步的網(wǎng)關(guān)ID。

    • Index Id是需要觸發(fā)主動(dòng)反向同步的共享ID,如果是NFS共享,假設(shè)共享名字為test1,則Index Id為“NFStest1”,如果是SMB共享,假設(shè)共享名字為test2,則Index Id為“SMBtest2”。

    • Path是需要觸發(fā)主動(dòng)反向同步的特定的掛載點(diǎn)內(nèi)的文件夾。

      • 當(dāng)創(chuàng)建共享時(shí)沒有指定OSS Bucket子目錄,則Path為OSS Bucket子目錄。

        例如:假設(shè)需要反向同步的特定文件夾在OSS上的路徑為oss://<bucket name>/dir,其中<bucket name>為OSS Bucket的名稱,則Path為/dir

      • 當(dāng)創(chuàng)建共享時(shí)已指定OSS Bucket子目錄,則Path為該子目錄的相對(duì)路徑。

        例如:假設(shè)需要反向同步的特定文件夾在OSS上的路徑為oss://<bucket name>/<prefix>/dir,其中<bucket name>為OSS Bucket的名稱,<prefix>為共享指定的OSS Bucket子目錄,則Path為/dir

      • 如果您需要觸發(fā)共享根目錄的反向同步,則Path為空或者“/"

    輸出結(jié)果示例如下:

    <?xml version='1.0' encoding='UTF-8'?>
    <TriggerGatewayRemoteSyncResponse>
        <TaskId>t-000cbzf2v72pcall****</TaskId>
        <Message>successful</Message>
        <RequestId>72191BD9-10AF-43BA-B1B5-4677F992DA3E</RequestId>
        <Code>200</Code>
        <Success>true</Success>
    </TriggerGatewayRemoteSyncResponse>
  3. 由于主動(dòng)觸發(fā)反向同步是一個(gè)異步的長(zhǎng)時(shí)間的過程,所以需要通過不斷輪詢?nèi)蝿?wù)接口來獲知主動(dòng)反向同步任務(wù)是否完成,完整代碼如下所示,您可以自行根據(jù)實(shí)際情況修改代碼內(nèi)容。

    from aliyunsdksgw.request.v20180511 import DescribeTasksRequest
    
    def describe_tasks():
        client = AcsClient('<AccessKey ID>', '<AccessKey Secret>', '<RegionId>')
        request = DescribeTasksRequest.DescribeTasksRequest()
        request.set_TaskId("<Task Id>")         # Task Id可以通過解析上一步的XML格式的輸出結(jié)果獲取,即示例中的“t-000cbzf2v72pcall****”。
        request.set_TargetId("<Gateway Id>")    # Gateway Id是需要觸發(fā)主動(dòng)反向同步的網(wǎng)關(guān)ID。
        result = client.do_action_with_exception(request)
        print(result)
    if __name__ == "__main__":
        describe_tasks()
                            

    輸出結(jié)果示例如下,可以通過XML解析獲取字段Progress的值,如果Progress為100表示任務(wù)已經(jīng)完成,如果Progress為-1表示任務(wù)失敗,如果Progress在0和100之間表示任務(wù)正在執(zhí)行中。

    <?xml version='1.0' encoding='UTF-8'?>
    <DescribeTasksResponse>
        <TotalCount>1</TotalCount>
        <Tasks>
            <SimpleTask>
                <Progress>100</Progress>
                <TaskId>t-000cbzf2v72pcall****</TaskId>
                <CreatedTime>1622194647</CreatedTime>
                <StateCode>task.state.completed</StateCode>
                <UpdatedTime>1622194656</UpdatedTime>
                <StageCode>completed</StageCode>
                <Name>task.name.operate_gateway.trigger_remote_sync</Name>
            </SimpleTask>
        </Tasks>
        <RequestId>0CE0F47E-1664-468E-AE95-8FC86A9C8BB3</RequestId>
        <Message>successful</Message>
        <PageSize>10</PageSize>
        <PageNumber>1</PageNumber>
        <Code>200</Code>
        <Success>true</Success>
    </DescribeTasksResponse>