本頁說明如何在檔案系統 (內部部署或雲端) 與 Cloud Storage 之間建立移轉工作。
從檔案系統到 Cloud Storage 的移轉作業屬於代理式移轉,也就是說,您會在可存取檔案系統的機器上安裝軟體代理程式,以協調移轉作業。
設定權限
建立移轉作業前,您必須為下列實體設定權限:
用於建立轉移作業的使用者帳戶。這是登入 Google Cloud 控制台的帳戶,或是驗證 `gcloud` CLI 時指定的帳戶。使用者帳戶可以是一般使用者帳戶,也可以是使用者管理的服務帳戶。 | |
Storage 移轉服務使用的Google 代管服務帳戶,又稱為服務代理程式。這個帳戶通常會以電子郵件地址識別,格式為 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com 。
|
|
![]() |
提供轉移代理程式權限的轉移代理程式帳戶。 Google Cloud 移轉代理程式帳戶會使用安裝代理程式的使用者憑證,或使用者管理的服務帳戶憑證進行驗證。 |
如需操作說明,請參閱「以代理程式為準的轉移權限」。
將代理程式安裝到代理程式集區
代理程式移轉作業會使用軟體代理程式來協調移轉作業。這些代理程式必須安裝在可存取移轉作業相關檔案系統的電腦上。
- 建立代理程式集區。請使用使用者帳戶執行這項操作。
- 將代理程式安裝到代理程式集區。請使用轉移代理商帳戶執行這項操作。
建議您先在來源代理程式集區中加入 3 個代理程式。轉移作業開始後,請監控轉移速度;轉移作業進行期間,您可以在集區中新增更多代理程式。
建議每個代理程式使用一個 VM,且每個 VM 至少要有 4 個 CPU 和 8 GiB RAM。
轉移作業選項
從檔案系統移轉至 Cloud Storage 時,可以使用下列 Storage 移轉服務功能。
- 使用資訊清單轉移特定檔案
- 您可以傳遞檔案清單,供 Storage 移轉服務處理。詳情請參閱「使用資訊清單轉移特定檔案或物件」。
- 指定儲存空間級別
- 您可以指定目的地 bucket 中資料要使用的
Cloud Storage 儲存空間類別。如要查看 REST 詳細資料,請參閱
StorageClass
選項,或搭配 Google Cloud CLI 使用--custom-storage-class
旗標。請注意,如果目的地 bucket 啟用 Autoclass,系統會忽略所有儲存空間級別設定。如果啟用自動調整級別功能,轉移至 bucket 的物件一開始會設為 Standard Storage。
- 保存中繼資料
-
從檔案系統移轉檔案時,Storage 移轉服務可以選擇保留特定屬性做為自訂中繼資料。如果這些檔案稍後寫回檔案系統,Storage 移轉服務可將保留的中繼資料轉換回 POSIX 屬性。
如要瞭解可保留的中繼資料,以及如何設定轉移作業,請參閱「中繼資料保留」的「POSIX 檔案系統轉移」一節。
- 管理網路頻寬
- Storage 移轉服務預設會盡可能使用可用頻寬,從檔案系統轉移檔案。您可以設定頻寬上限,避免轉移作業影響其他網路流量。頻寬限制會套用至代理程式集區層級。
詳情請參閱「管理網路頻寬」。
如要設定或變更頻寬限制,您的使用者帳戶必須具備儲存空間轉移管理員 (
roles/storagetransfer.admin
) 角色。 - 記錄
- Storage 移轉服務支援 Cloud Logging for Storage 移轉服務 (建議使用),以及以代理程式為基礎的移轉記錄。
建立轉移作業
請勿在轉移作業名稱中加入個人識別資訊 (PII) 或安全性資料等私密資訊。資源名稱可能會傳播至其他 Google Cloud 資源的名稱,並可能向專案外部的 Google 內部系統公開。
Storage 移轉服務提供多種介面,可供您建立移轉作業。
Google Cloud 控制台
前往 Google Cloud 控制台的「Storage Transfer Service」頁面。
按一下「建立移轉工作」。系統隨即會顯示「建立移轉工作」頁面。
選擇「POSIX 檔案系統」做為來源。
選取「Cloud Storage」做為目的地類型,然後點選「下一步」。
選取現有的代理程式集區,或選取「建立代理程式集區」,然後按照操作說明建立新的集區。
指定檔案系統目錄的完整路徑。
點選「下一步」。
在「Bucket or folder」(值區或資料夾) 欄位中,輸入目的地值區和 (選用) 資料夾名稱,或按一下「Browse」(瀏覽),從目前專案的現有值區清單中選取值區。如要建立新值區,請按一下
「建立新值區」。
點選「下一步」。
選擇排程選項。
點選「下一步」。
選擇轉移工作的設定。
在「說明」欄位中輸入轉移作業的說明。最佳做法是輸入有意義且獨一無二的說明,方便您區分工作。
在「中繼資料選項」下方,使用預設選項,或更新一或多個值。詳情請參閱「保留中繼資料」。
在「何時要覆寫」下方,選取下列其中一個選項:
永不:如果來源檔案與目的地檔案同名,Storage 移轉服務會略過來源檔案,不會進行移轉。
如果不同:如果來源檔案與目的地檔案名稱相同,但 ETag 或總和檢查碼值不同,則覆寫目的地檔案。
一律覆寫:來源檔案與目的地檔案的名稱相同時,一律覆寫目的地檔案 (即便檔案內容完全相同)。
在「何時刪除」下方,選取下列其中一個選項:
永不:永不刪除來源或目的地的檔案。
轉移檔案後,請從來源刪除檔案:將檔案轉移至目的地後,從來源刪除檔案。如果來源檔案未轉移 (例如目的地中已存在該檔案),來源檔案就不會遭到刪除。
如果檔案未同時存在於來源,則將檔案從目的地中刪除:如果目的地 Cloud Storage 值區中的檔案未同時存在於來源,則將檔案從 Cloud Storage 值區中刪除。
這個選項可確保目的地 Cloud Storage bucket 與來源完全相符。
選取是否要啟用 Cloud Storage 記錄功能和/或啟用 Cloud Logging 記錄功能。詳情請參閱「檔案系統移轉記錄檔」和「Storage 移轉服務的 Cloud Logging」。
如要建立移轉工作,請按一下「建立」。
gcloud
使用 gcloud
指令前,請先安裝 Google Cloud CLI。
如要建立新的移轉工作,請使用 gcloud transfer jobs create
指令。建立新工作會啟動指定的轉移作業,除非指定排程或 --do-not-run
。
gcloud transfer jobs create \ posix:///SOURCE \ gs://DESTINATION/ \ --source-agent-pool=SOURCE_POOL_NAME
其中:
SOURCE 是檔案系統根目錄的絕對路徑。這個值會加上
posix://
前置字元,因此最終值會包含 3 個正斜線。例如:posix:///tmp/data/
。DESTINATION 是 Cloud Storage bucket 的名稱,也可以是資料夾路徑,後面加上尾端斜線。例如:
gs://example-bucket/data/
。--source-agent-pool
會指定這項轉移作業要使用的來源代理程式集區。
其他選項包括:
--do-not-run
可防止 Storage 移轉服務在提交指令後執行作業。如要執行這項工作,請更新工作以新增時間表,或使用jobs run
手動啟動工作。--manifest-file
指定 Cloud Storage 中 CSV 檔案的路徑,其中包含要從來源轉移的檔案清單。如需資訊清單檔案格式,請參閱「使用資訊清單轉移特定檔案或物件」。工作資訊:您可以指定
--name
和--description
。時間表:指定
--schedule-starts
、--schedule-repeats-every
和--schedule-repeats-until
,或--do-not-run
。移轉選項:指定是否要覆寫目的地檔案 (
--overwrite-when=different
或always
),以及是否要在移轉期間或之後刪除特定檔案 (--delete-from=destination-if-unique
或source-after-transfer
);指定要保留哪些中繼資料值 (--preserve-metadata
);並視需要為移轉的物件設定儲存空間類別 (--custom-storage-class
)。
如要查看所有選項,請執行 gcloud transfer jobs create --help
或參閱gcloud
參考說明文件。請注意,並非所有選項都支援以服務專員為主的轉移;不支援的選項會在說明文字中註明。
REST
以下範例說明如何透過 REST API 使用 Storage 移轉服務。
使用 Storage 移轉服務 API 設定或編輯移轉工作時,系統時間必須為世界標準時間 (UTC)。如要進一步瞭解如何指定移轉工作排程,請參閱「排程」一文。
如要將檔案從 POSIX 檔案系統移至 Cloud Storage bucket,請使用 transferJobs.create,並搭配 posixDataSource
:
POST https://storagetransfer.googleapis.com/v1/transferJobs { "name":"transferJobs/sample_transfer", "description": "My First Transfer", "status": "ENABLED", "projectId": "my_transfer_project_id", "schedule": { "scheduleStartDate": { "year": 2022, "month": 5, "day": 2 }, "startTimeOfDay": { "hours": 22, "minutes": 30, "seconds": 0, "nanos": 0 } "scheduleEndDate": { "year": 2022, "month": 12, "day": 31 }, "repeatInterval": { "259200s" }, }, "transferSpec": { "posixDataSource": { "rootDirectory": "/bar/", }, "sourceAgentPoolName": "my_example_pool", "gcsDataSink": { "bucketName": "destination_bucket" "path": "foo/bar/" }, } }
schedule
欄位為選填欄位;如未填寫,則必須使用 transferJobs.run
要求啟動轉移工作。
建立工作後,如要查看轉移作業的狀態,請使用
transferJobs.get
:
GET https://storagetransfer.googleapis.com/v1/transferJobs/sample_transfer?project_id=my_transfer_project_id
用戶端程式庫
下列範例說明如何透過 Go、Java、Node.js 和 Python,以程式化方式使用 Storage 移轉服務。
以程式化方式設定或編輯移轉工作時,時間必須為世界標準時間 (UTC)。如要進一步瞭解如何指定移轉工作排程,請參閱「排程」一文。
如要進一步瞭解 Storage 移轉服務用戶端程式庫,請參閱開始使用 Storage 移轉服務用戶端程式庫。
如要將檔案從 POSIX 檔案系統移至 Cloud Storage bucket,請按照下列步驟操作: