Memfilter objek sumber menurut awalan

Panduan ini menjelaskan cara menggunakan awalan sertakan dan kecualikan untuk mengontrol file mana yang ditransfer.

Ringkasan

Storage Transfer Service mendukung pemfilteran data dari sumber Amazon S3, Microsoft Azure Blob Storage, dan Cloud Storage menggunakan awalan. Awalan adalah string karakter di awal jalur yang menentukan sekumpulan objek.

Anda dapat menggunakan filter awalan dengan tiga cara:

  • Sertakan awalan: Hanya objek yang cocok dengan awalan yang ditentukan yang ditransfer.

  • Kecualikan awalan: Objek yang cocok dengan awalan yang ditentukan akan dikecualikan dari transfer.

  • Keduanya bersama-sama: Anda dapat menggunakan awalan penyertaan dan pengecualian secara bersamaan untuk kontrol yang lebih terperinci. Jika digunakan bersama, setiap awalan pengecualian harus dimulai dengan salah satu awalan penyertaan yang ditentukan.

Jika Anda tidak menentukan awalan apa pun, semua objek di bucket sumber akan ditransfer.

Filter awalan dapat digabungkan dengan pola glob, filter waktu terakhir diubah, dan filter class penyimpanan S3.

Aturan

Aturan berikut berlaku untuk awalan:

  • Tidak ada garis miring di awal: Jangan sertakan garis miring di awal dalam awalan. Untuk jalur s3://my-bucket/logs/2025/requests.gz, awalan yang benar adalah logs/2025/requests.gz.

  • Kecocokan sebagian: Awalan berfungsi dengan pencocokan sebagian. Misalnya, awalan path cocok dengan path_1/ dan path_2/.

  • Tanpa karakter pengganti: Karakter pengganti tidak didukung.

  • Relatif terhadap folder sumber: Jika sumber transfer Anda menyertakan jalur atau folder, awalan bersifat relatif terhadap jalur atau folder tersebut. Lihat Interaksi dengan jalur atau folder sumber untuk mengetahui detailnya.

  • Awalan include yang berbeda: Setiap awalan include harus menentukan bagian unik dari namespace objek. Anda tidak dapat menggunakan awalan include yang sudah dicakup oleh awalan include lain. Misalnya, Anda tidak dapat menentukan data/ dan data/reports/ sebagai awalan yang disertakan.

  • Kecualikan dependensi awalan: Saat menggunakan awalan sertakan dan kecualikan bersama-sama, setiap awalan kecualikan harus diawali dengan salah satu awalan sertakan yang ditentukan. Misalnya, jika path adalah awalan sertakan, awalan kecualikan yang valid dapat berupa path/b atau pathway. Aturan ini tidak berlaku jika Anda hanya menggunakan awalan pengecualian.

  • Maksimum 1.000 awalan: Satu tugas transfer mendukung hingga 1.000 awalan. Anda dapat membagi transfer menjadi beberapa tugas jika diperlukan awalan tambahan.

Untuk mengetahui informasi umum selengkapnya tentang awalan, lihat Mencantumkan Kunci Secara Hierarkis Menggunakan Awalan dan Pembatas dalam dokumentasi Amazon S3 atau Metode daftar objek untuk Cloud Storage.

Interaksi dengan jenis filter lainnya

Saat Anda menggunakan beberapa filter, Storage Transfer Service akan menerapkannya dalam urutan berikut:

  1. Sertakan awalan: Mempersempit objek yang akan dipertimbangkan.

  2. Kondisi objek (pola glob, waktu modifikasi terakhir, dan kelas penyimpanan S3): Memfilter objek yang cocok dengan awalan include. Objek harus cocok dengan semua kondisi objek yang ditentukan agar disertakan dalam transfer.

  3. Mengecualikan awalan: Menghapus objek dari hasil.

Pelajari lebih lanjut cara memfilter dengan pola glob, waktu terakhir diubah, dan class penyimpanan S3.

Interaksi dengan jalur atau folder sumber

Filter penyertaan dan pengecualian bersifat relatif terhadap jalur atau folder yang Anda tentukan untuk sumber.

Misalnya, jika sumber Anda adalah gs://bucketA/alpha, dan Anda ingin menentukan filter untuk gs://bucketA/alpha/beta:

Benar

  • Jalur sumber: gs://bucketA/alpha
  • Awalan pengecualian: beta/
  • Hasil: Ini dengan benar mengecualikan gs://bucketA/alpha/beta

Salah

  • Jalur sumber: gs://bucketA/alpha
  • Awalan pengecualian: alpha/beta/
  • Hasil: Ini salah mendefinisikan filter untuk gs://bucketA/alpha/alpha/beta

Menentukan awalan

Cloud Console

Untuk menentukan awalan yang disertakan dan dikecualikan menggunakan konsol Google Cloud, masukkan nilai saat membuat transfer baru atau saat memperbarui transfer yang ada.

gcloud CLI

Untuk menentukan awalan yang disertakan dan dikecualikan menggunakan CLI gcloud, teruskan flag --include-prefixes dan --exclude-prefixes ke perintah gcloud transfer jobs create atau perintah gcloud transfer jobs update:

gcloud transfer jobs create SOURCE DESTINATION \
  --include-prefixes="path_1/,path_2/" --exclude-prefixes="path_1/subpath_2/"

Pisahkan beberapa awalan dengan koma, tanpa spasi setelah koma. Misalnya, --include-prefixes="foo,bar".

REST

Untuk menentukan awalan sertakan dan kecualikan menggunakan REST API, gunakan kolom includePrefixes[] dan excludePrefixes[]:

{
    "description": "Transfer with prefixes",
    "status": "ENABLED",
    "projectId": "PROJECT_ID",
    "schedule": {
        "scheduleStartDate": {
            "day": 1,
            "month": 1,
            "year": 2015
        },
        "startTimeOfDay": {
            "hours": 1,
            "minutes": 1
        }
    },
    "transferSpec": {
        "gcsDataSource": {
            "bucketName": "SOURCE_BUCKET"
        },
        "gcsDataSink": {
            "bucketName": "DESTINATION_BUCKET"
        },
        "transferOptions": {
            "deleteObjectsFromSourceAfterTransfer": true
        },
        "objectConditions": {
            "includePrefixes": [
                "path_1/",
                "path_2/"
            ],
            "excludePrefixes": [
                "path_1/subpath_2/object_5"
            ]
        }
    }
}

Untuk mengetahui informasi selengkapnya, lihat referensi ObjectConditions.

Contoh objek dan jalur

Contoh berikut menggunakan daftar objek contoh ini:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Menggunakan awalan sertakan

Untuk mentransfer hanya objek di path_1/, gunakan awalan berikut:

path_1/

Hal ini mencakup objek di path_1/. Objek berikut disertakan dalam transfer:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Anda dapat menentukan beberapa jalur yang akan disertakan. Misalnya, Anda dapat meneruskan hal berikut:

path_1/subpath_2/
path_1/subpath_3/

Dalam hal ini, transfer mencakup objek berikut:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Pencocokan parsial didukung. Contoh:

path

Objek berikut akan ditransfer:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Saat Anda menggunakan awalan yang disertakan, jalur yang tidak Anda sertakan secara khusus tidak akan ditransfer ke bucket tujuan Cloud Storage.

Mengecualikan awalan

Menggunakan awalan pengecualian saat membuat transfer akan menginstruksikan Storage Transfer Service untuk mengabaikan jalur yang tercantum untuk transfer.

Untuk mengecualikan objek di path_1/, teruskan awalan berikut:

path_1/

Tindakan ini mengecualikan objek di bawah path_1/. Dalam hal ini, objek berikut disertakan dalam transfer:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Anda dapat menentukan beberapa jalur yang akan dikecualikan. Misalnya, Anda dapat meneruskan hal berikut:

path_1/subpath_2/
path_2/subpath_3/

Dalam hal ini, transfer mencakup objek berikut:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Menyertakan dan mengecualikan jalur secara bersamaan

Anda dapat menerapkan awalan pengecualian dan awalan penyertaan secara bersamaan. Dalam hal ini, awalan pengecualian membatasi apa yang disertakan oleh awalan penyertaan dalam transfer.

Saat menentukan kedua jenis awalan, setiap awalan pengecualian harus dimulai dengan jalur yang ditentukan dalam awalan penyertaan.

Misalnya, untuk menyertakan objek di path_1/ dan mengecualikan objek di subpath_1/, teruskan yang berikut:

include: path_1/
exclude: path_1/subpath_1/

Dalam hal ini, transfer mencakup objek berikut:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Untuk menyertakan semua objek di path_1/ dan path_2/, kecuali item di path_1/subpath_1/ atau path_2/subpath_3/, teruskan yang berikut:

include: path_1/
         path_2/
exclude: path_1/subpath_1/
         path_2/subpath_3/

Dalam hal ini, transfer mencakup objek berikut:

xx://bucketname/object_1
xx://bucketname/object_2
xx://bucketname/path_1/object_3
xx://bucketname/path_1/subpath_1/object_4
xx://bucketname/path_1/subpath_2/object_5
xx://bucketname/path_2/object_6
xx://bucketname/path_2/subpath_3/object_7
xx://bucketname/path_2/subpath_4/object_8

Kesalahan umum yang harus dihindari

Berikut adalah contoh konfigurasi yang salah dan cara memperbaikinya.

Menyertakan jalur yang digunakan di awalan include lain

Awalan include tidak boleh berupa subdirektori dari awalan include lainnya.

Salah: Awalan path_1/subpath_1 sudah tercakup oleh path_1/.

include: path_1/
         path_1/subpath_1

Benar: Untuk memperbaikinya, hapus awalan yang berlebihan dan lebih spesifik.

include: path_1/

Awalan pengecualian tidak cocok dengan awalan penyertaan

Jika digunakan bersama, awalan pengecualian harus dimulai dengan salah satu awalan sertakan.

Salah: Awalan subpath_1 tidak dimulai dengan path_1/ atau path_2/.

include: path_1/
         path_2/
exclude: subpath_1

Benar: Pastikan awalan pengecualian berisi jalur lengkap dari awalan sertakan.

include: path_1/
         path_2/
exclude: path_1/subpath_1/