Memfilter objek sumber menggunakan karakter pengganti

Tugas Storage Transfer Service mendukung string penelusuran dengan karakter pengganti seperti * dan ? untuk mencocokkan nama file atau jalur. String penelusuran ini disebut pola glob.

Anda dapat menggunakan pola glob untuk menentukan objek sumber mana yang akan disertakan dalam transfer. Hal ini memungkinkan kontrol yang lebih terperinci daripada hanya memfilter menurut awalan.

Pemfilteran dengan pola glob didukung untuk transfer dari AWS S3 dan Azure.

Sintaksis glob

Pola glob menggunakan sintaksis berikut untuk mencocokkan jalur objek:

Sintaksis Deskripsi
? Mencocokkan karakter tunggal apa pun, kecuali /.
* Mencocokkan nol karakter atau lebih, tidak termasuk /.
** Mencocokkan nol karakter atau lebih, termasuk /.
[abc] Mencocokkan tepat satu karakter (misalnya, a, b, atau c).
[a-z] Mencocokkan tepat satu karakter dalam rentang inklusif (misalnya, a hingga z).
[!abc] atau [^abc] Mencocokkan tepat satu karakter yang bukan a, b, atau c.
{abc,xyz} Mencocokkan salah satu string (misalnya, abc atau xyz). Tidak boleh berisi garis miring (/) atau dua tanda bintang (**).
\? Mencocokkan karakter literal setelah garis miring terbalik (misalnya, \? cocok dengan ? literal).

Pola contoh

Mencocokkan semua file .log dari direktori december:

logs_by_year/**/december/*.log

Transfer semua file di direktori data_analytics/ yang tidak diawali dengan . (titik) atau _ (garis bawah):

data_analytics/[!._]*

Untuk membuat contoh sebelumnya menjadi rekursif:

data_analytics/**/[!._]*

Transfer semua file PDF dari tepat dua direktori tertentu:

quarterly_reports/2025/{q1-final,q4-final}/*.pdf

Menentukan pola glob

Anda dapat menentukan pola glob saat membuat atau memperbarui tugas transfer.

gcloud CLI

Untuk memfilter menurut pola glob menggunakan CLI gcloud, teruskan flag --match-glob ke perintah gcloud transfer jobs create atau gcloud transfer jobs update:

gcloud transfer jobs create SOURCE DESTINATION \
  --match-glob="GLOB_PATTERN"

Contoh:

Perintah berikut membuat tugas yang hanya mentransfer file .log dari direktori december:

gcloud transfer jobs create s3://my-source-bucket gs://my-sink-bucket \
  --match-glob="logs_by_year/**/december/*.log"

REST

Untuk memfilter menurut pola glob menggunakan REST API, tentukan kolom matchGlob di objectConditions transferSpec Anda.

{
  "description": "Transfer December logs from all years",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "awsS3DataSource": {
      "bucketName": "AWS_SOURCE_NAME",
      "awsAccessKey": {
        "accessKeyId": "AWS_ACCESS_KEY_ID",
        "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
      }
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "matchGlob": "logs_by_year/**/december/*.log"
    }
  }
}

Untuk informasi selengkapnya, lihat referensi ObjectConditions.

Konsol Google Cloud

Pemfilteran menurut pola glob tidak didukung di konsol Google Cloud.

Interaksi dengan filter lain

Saat Anda menggunakan filter pola glob dengan filter awalan atau filter waktu diubah terakhir kali, Storage Transfer Service menerapkan filter dalam urutan berikut:

  1. Sertakan awalan: Mempersempit objek yang akan dipertimbangkan.

  2. Kondisi objek (pola glob dan waktu diubah terakhir kali): Memfilter objek yang cocok dengan awalan sertakan. Objek harus cocok dengan filter glob dan filter waktu terakhir diubah agar disertakan dalam hasil.

  3. Mengecualikan awalan: Menghapus objek dari hasil.

Pelajari lebih lanjut pemfilteran menurut awalan dan pemfilteran menurut waktu terakhir diubah.

Sertakan awalan

Pola glob hanya diterapkan pada objek yang cocok dengan setidaknya satu awalan sertakan.

Storage Transfer Service akan menampilkan error jika pola glob Anda bertentangan dengan semua pola awalan sertakan.

Contoh: Kombinasi yang valid

  • include_prefix: ["foo/"]
  • match_glob: "foo/bar/**"

Hasil: Valid. Layanan ini terlebih dahulu mencantumkan objek di bagian foo/, lalu menerapkan pola glob ke daftar tersebut.

Contoh: Kombinasi yang valid

  • include_prefix: ["logs/2024/", "logs/2025/"]
  • match_glob: "**/*.json"

Hasil: Valid. Layanan ini mencantumkan semua objek di direktori 2024 dan 2025, lalu hanya mentransfer file yang diakhiri dengan .json.

Contoh: Kontradiksi

  • include_prefix: ["foo/"]
  • match_glob: "bar/**"

Hasil: Error. Pola match_glob tidak dapat mencocokkan objek yang dipilih oleh include_prefix.

Mengecualikan awalan

Filter awalan pengecualian diterapkan setelah filter awalan penyertaan dan filter pola glob.

Tidak ada pemeriksaan kontradiksi yang dilakukan. Objek apa pun yang cocok dengan awalan pengecualian dihapus dari daftar transfer, meskipun cocok dengan pola glob.

Contoh

  • include_prefix: ["logs/"]
  • match_glob: "**/*.log"
  • exclude_prefix: ["logs/temp/"]

Hasil: Layanan mentransfer semua objek di bawah logs/ yang diakhiri dengan .log, kecuali yang ada di direktori logs/temp/.