סינון אובייקטים במקור לפי מועד השינוי

אפשר לסנן את האובייקטים שרוצים להעביר לפי מועד השינוי האחרון שלהם. כך אפשר להעביר רק אובייקטים ששונו:

  • לפני או אחרי תאריך ושעה ספציפיים
  • לפני או אחרי פרק זמן מוגדר שחלף מאז התחלת העברת העבודה

התכונה הזו שימושית להגדרת העברות מצטברות או לדילוג על אובייקטים שלא נכללים בטווח זמן.

אפשר לסנן לפי מועד השינוי האחרון בהעברות מכל המקורות, למעט רשימות של כתובות URL.

מסננים מבוססי-זמן

הסינון מוגדר באמצעות הערכים last modified since,‏ last modified before,‏ minimum time elapsed since modified ו-maximum time elapsed since modified. אפשר להשתמש במסננים בנפרד או ביחד כדי ליצור חלון זמן.

שדה תיאור
השינוי האחרון מאז כולל אובייקטים בהעברה שעברו שינוי בפעם האחרונה בתאריך הזה או אחריו.
השינוי האחרון בוצע לפני כולל אובייקטים בהעברה שעברו שינוי בפעם האחרונה לפני חותמת הזמן הזו.
הזמן המינימלי שעבר מאז השינוי כולל אובייקטים בהעברה ששונו לאחרונה לפני לפחות פרק הזמן הזה. לדוגמה, אפשר להשתמש במסנן הזה כדי לכלול רק אובייקטים שעברו שינוי לפני חודש לפחות. גם אובייקטים שלא מוגדר להם 'הזמן של השינוי האחרון' מועברים.
הזמן המקסימלי שחלף מאז השינוי כולל אובייקטים בהעברה שהשינוי האחרון בהם בוצע לפני פרק הזמן הזה. לדוגמה, אפשר להשתמש במסנן הזה כדי לכלול רק אובייקטים שעברו שינוי ב-7 הימים האחרונים. גם אובייקטים שלא הוגדר להם 'זמן השינוי האחרון' מועברים.

ציון מסנן מבוסס-זמן

כשיוצרים או מעדכנים העברה, אפשר לציין מסננים של זמן שינוי.

חותמות הזמן צריכות להיות בפורמט UTC, ולכלול מחרוזת RFC 3339 (למשל, 2025-10-31T10:00:00Z). משך הזמן צריך להיות בפורמט של משך זמן מוחלט (למשל, 1m לחודש אחד, 1h30m לשעה וחצי).

מסוף Google Cloud

כדי לציין מסנן זמן במסוף Google Cloud:

  1. עוברים לדף Create transfer job (יצירת העברת נתונים) או Edit transfer job (עריכת העברת נתונים).
  2. בקטע Choose data to transfer (בחירת נתונים להעברה), בוחרים באפשרות Dates & times (תאריכים ושעות) בתור Filter type (סוג המסנן).
  3. מזינים תאריך ושעה בטווח הזמן המוחלט או משך זמן בטווח הזמן היחסי. אפשר לציין כמה מסננים ביחד.

‫CLI של gcloud

כדי לסנן לפי זמן שינוי באמצעות ה-CLI של gcloud, מעבירים את דגלי הסינון לפי זמן לפקודה gcloud transfer jobs create או gcloud transfer jobs update:

gcloud transfer jobs create SOURCE DESTINATION \
  --include-modified-before-absolute="DATETIME" \
  --include-modified-after-absolute="DATETIME" \
  --include-modified-before-relative="DURATION" \
  --include-modified-after-relative="DURATION"

כאשר:

  • --include-modified-before-absolute כולל אובייקטים ששונו לאחרונה לפני תאריך ושעה מוחלטים. לדוגמה, אם מציינים 2020-01-01, ההעברה כוללת אובייקטים שהשינוי האחרון בהם בוצע לפני 1 בינואר 2020. בפורמט התאריך והשעה %Y-%m-%dT%H:%M:%S%z.
  • --include-modified-after-absolute כולל אובייקטים שהשינוי האחרון בהם בוצע אחרי תאריך ושעה מוחלטים. לדוגמה, אם מציינים את התאריך 2020-01-01, ההעברה כוללת אובייקטים שהשינוי האחרון בהם בוצע אחרי 1 בינואר 2020. בפורמט התאריך והשעה %Y-%m-%dT%H:%M:%S%z.
  • --include-modified-before-relative כולל אובייקטים שעברו שינוי מחוץ לפרק זמן מסוים שחלף. לדוגמה, אם מציינים משך של 10d, המערכת תעביר אובייקטים שעברו שינוי אחרון לפני יותר מ-10 ימים משעת ההתחלה של ההעברה. משתמשים בפורמט של משך מוחלט. למשל, ‫1m לחודש; 1h30m לשעה ו-30 דקות.
  • --include-modified-after-relative כולל אובייקטים ששונו בפרק זמן מסוים. לדוגמה, אם מציינים משך זמן של 10d, המערכת מעבירה אובייקטים שהשינוי האחרון בהם בוצע פחות מ-10 ימים לפני תחילת ההעברה. משתמשים בפורמט של משך מוחלט. למשל, ‫1m לחודש; 1h30m לשעה וחצי.

דוגמה (אחרי שינוי):

הפקודה הבאה מעבירה רק אובייקטים ששונו בתאריך 1 באוקטובר 2025 או אחריו.

gcloud transfer jobs create gs://my-source-bucket gs://my-sink-bucket
  --include-modified-after-absolute="2025-10-01T00:00:00Z"

דוגמה (חלון זמן):

הפקודה הבאה מעבירה רק אובייקטים ששונו במהלך חודש אוקטובר 2025.

gcloud transfer jobs create gs://my-source-bucket gs://my-sink-bucket
  --include-modified-after-absolute="2025-10-01T00:00:00Z"
  --include-modified-before-absolute="2025-11-01T00:00:00Z"

דוגמה (זמן שחלף):

הפקודה הבאה מעבירה רק אובייקטים ששונו ב-7 הימים האחרונים.

gcloud transfer jobs create gs://my-source-bucket gs://my-sink-bucket
  --include-modified-after-relative="7d"

REST

כדי לסנן לפי זמן שינוי באמצעות API בארכיטקטורת REST, צריך לציין את השדות של הסינון לפי זמן ב-objectConditions של transferSpec.

{
  "description": "DESCRIPTION",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "gcsDataSource": {
      "bucketName": "SOURCE_BUCKET"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "lastModifiedBefore": "DATETIME",
      "lastModifiedSince": "DATETIME",
      "minTimeElapsedSinceLastModification": "DURATION",
      "maxTimeElapsedSinceLastModification": "DURATION",

    }
  }
}

כאשר:

  • lastModifiedBefore כולל אובייקטים ששונו לאחרונה לפני תאריך ושעה מוחלטים. לדוגמה, אם מציינים את הערך 2020-01-01, ההעברה כוללת אובייקטים שהשינוי האחרון בהם בוצע לפני 1 בינואר 2020. בפורמט התאריך והשעה %Y-%m-%dT%H:%M:%S%z.
  • lastModifiedSince כולל אובייקטים ששונו לאחרונה אחרי תאריך/שעה מוחלטים. לדוגמה, אם מציינים את התאריך 2020-01-01, ההעברה כוללת אובייקטים שהשינוי האחרון בהם בוצע אחרי 1 בינואר 2020. בפורמט התאריך והשעה %Y-%m-%dT%H:%M:%S%z.
  • minTimeElapsedSinceLastModification כולל אובייקטים שעברו שינוי מחוץ לפרק זמן מסוים שחלף. לדוגמה, אם מציינים משך של 10d, המערכת תעביר אובייקטים שעברו שינוי אחרון לפני יותר מ-10 ימים משעת ההתחלה של ההעברה. משתמשים בפורמט של משך זמן מוחלט. למשל, ‫1m לחודש; 1h30m לשעה ו-30 דקות.
  • maxTimeElapsedSinceLastModification כולל אובייקטים ששונו בפרק זמן מסוים. לדוגמה, אם מציינים משך של 10d, המערכת מעבירה אובייקטים שהשינוי האחרון בהם בוצע פחות מ-10 ימים לפני שעת ההתחלה של ההעברה. משתמשים בפורמט של משך זמן מוחלט. למשל, ‫1m לחודש; 1h30m לשעה וחצי.

דוגמה (חלון זמן):

גוף ה-JSON הבא מגדיר העברה של אובייקטים ששונו רק במהלך אוקטובר 2025.

{
  "description": "Transfer October 2025 data",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "gcsDataSource": {
      "bucketName": "SOURCE_BUCKET"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    },
    "objectConditions": {
      "lastModifiedSince": "2025-10-01T00:00:00Z",
      "lastModifiedBefore": "2025-11-01T00:00:00Z"
    }
  }
}

מידע נוסף זמין במאמר בנושא ObjectConditions.

אינטראקציה עם מסננים אחרים

כשמשתמשים בכמה מסננים, Storage Transfer Service מחיל אותם בסדר הבא:

  1. Include prefixes: מצמצם את האובייקטים שצריך להביא בחשבון.

  2. תנאי אובייקט (דפוס glob ומועד שינוי אחרון): מסנן את האובייקטים שתואמים לקידומת ההכללה. כדי שאובייקט ייכלל בתוצאה, הוא צריך להתאים גם למסנן glob וגם למסנן של השינוי האחרון.

  3. החרגת קידומות: הסרת אובייקטים מהתוצאה.

מידע נוסף על סינון לפי קידומת ועל סינון באמצעות תבניות glob

דוגמה: שילוב של כל המסננים

נניח שיש לכם את הגדרת המסנן הבאה להעברה מ-AWS S3 או מ-Azure:

  • include_prefix: "logs/"
  • match_glob: "**/*.log"
  • lastModifiedSince: "2025-10-31T00:00:00Z"
  • exclude_prefix: "logs/temp/"

תוצאה: השירות יבצע את ההעברה באופן הבא:

  1. קודם כול, הוא בודק רק אובייקטים בספרייה logs/.
  2. לאחר מכן, המערכת מחפשת אובייקטים שמסתיימים ב-.log ושעברו שינוי בתאריך 31 באוקטובר 2025 או אחריו.
  3. לבסוף, הוא מסיר מהרשימה את כל האובייקטים שנמצאים בספרייה logs/temp/.