Отримайте 50 ГБ безкоштовно!Зареєструйте безкоштовний акаунт та почніть міграцію сьогодні — кредитна картка не потрібна.Зареєструватися →
GodwitGodwit Sync
ГоловнаЦіниЗавантаженняДокументація
Кабінет клієнтаПочати
Почати
Посібники

Покрокові посібники

Практичні посібники для типових сценаріїв міграції та робочих процесів.

Локальна файлова система до S3

Завантажте локальну директорію до S3-сумісного bucket. Ідеально для початкового заповнення даними або робочих процесів резервного копіювання.

Команда CLI:

# Upload local data to S3
godwit sync \
  --source ./testdata/ \
  --destination s3://my-bucket/backup \
  --destination-access-key access_key \
  --destination-secret-key secret_key \
  --destination-endpoint localhost:9001 \
  --destination-secure=false \
  --state-path ./tmp/state.db \
  --logs-dir ./tmp/logs \
  --ui

Еквівалент у конфігураційному файлі:

# local-to-s3.yml
source:
  url: ./testdata/

destination:
  url: s3://my-bucket/backup
  access_key: access_key
  secret_key: secret_key
  endpoint: localhost:9001
  secure: false

run:
  state_path: ./tmp/state.db

output:
  logs_dir: ./tmp/logs
  ui: true

S3 до локальної файлової системи

Завантажте об'єкти з S3 bucket на локальну файлову систему. Корисно для створення локальних резервних копій або відновлення даних.

Команда CLI:

# Pull bucket contents to local disk
godwit sync \
  --source s3://my-bucket/data \
  --source-access-key access_key \
  --source-secret-key secret_key \
  --source-endpoint localhost:9001 \
  --source-secure=false \
  --destination ./downloads/ \
  --state-path ./tmp/state.db \
  --logs-dir ./tmp/logs \
  --ui

Еквівалент у конфігураційному файлі:

# s3-to-local.yml
source:
  url: s3://my-bucket/data
  access_key: access_key
  secret_key: secret_key
  endpoint: localhost:9001
  secure: false

destination:
  url: ./downloads/

run:
  state_path: ./tmp/state.db

output:
  logs_dir: ./tmp/logs
  ui: true

Міграція S3 до S3

Копіювання даних між S3-сумісними endpoints. Передачі виконуються повністю на льоту без локального сховища — дані передаються безпосередньо від джерела до призначення.

Команда CLI:

# Copy between S3-compatible endpoints
godwit sync \
  --source s3://source-bucket/data \
  --source-endpoint source.storage.example.com \
  --source-region us-east-1 \
  --source-access-key SOURCE_ACCESS_KEY \
  --source-secret-key SOURCE_SECRET_KEY \
  --source-secure=true \
  --destination s3://dest-bucket/backup \
  --destination-endpoint localhost:9000 \
  --destination-access-key access_key \
  --destination-secret-key secret_key \
  --destination-secure=false \
  --state-path ./tmp/state.db \
  --logs-dir ./tmp/logs

Еквівалент у конфігураційному файлі:

# s3-to-s3.yml
source:
  url: s3://source-bucket/data
  endpoint: source.storage.example.com
  region: us-east-1
  access_key: SOURCE_ACCESS_KEY
  secret_key: SOURCE_SECRET_KEY
  secure: true

destination:
  url: s3://dest-bucket/backup
  endpoint: localhost:9000
  access_key: access_key
  secret_key: secret_key
  secure: false

run:
  state_path: ./tmp/state.db

output:
  logs_dir: ./tmp/logs

Передача між кластерами S3

Копіювання між двома S3-сумісними endpoints з фільтрацією та обмеженням воркерів:

Команда CLI:

# Copy between S3-compatible endpoints
# Skip checksum files and limit to 2 workers
godwit sync \
  --source s3://source-bucket \
  --source-endpoint localhost:9001 \
  --source-access-key access_key \
  --source-secret-key secret_key \
  --source-secure=false \
  --destination s3://dest-bucket/backup \
  --destination-endpoint localhost:9101 \
  --destination-access-key access_key \
  --destination-secret-key secret_key \
  --destination-secure=false \
  --skip .md5 \
  --parallel 2 \
  --ui

Еквівалент у конфігураційному файлі:

# cross-cluster.yml
source:
  url: s3://source-bucket
  endpoint: localhost:9001
  access_key: access_key
  secret_key: secret_key
  secure: false

destination:
  url: s3://dest-bucket/backup
  endpoint: localhost:9101
  access_key: access_key
  secret_key: secret_key
  secure: false

policy:
  skip:
    - .md5

options:
  parallel: 2

output:
  ui: true

Обмежені IAM-дозволи

Коли IAM-ідентифікатор джерела не має дозволу s3:GetObjectTagging, використовуйте --skip-tags, щоб пропустити читання тегів об'єктів замість помилки:

Команда CLI:

# S3 source with restricted IAM
godwit sync \
  --source s3://my-bucket/data \
  --source-endpoint source.storage.example.com \
  --source-region us-east-1 \
  --source-access-key ACCESS_KEY \
  --source-secret-key SECRET_KEY \
  --source-secure=true \
  --skip-tags \
  --destination ./downloads \
  --state-path ./state.db

Еквівалент у конфігураційному файлі:

# restricted-iam.yml
source:
  url: s3://my-bucket/data
  endpoint: source.storage.example.com
  region: us-east-1
  access_key: ACCESS_KEY
  secret_key: SECRET_KEY
  secure: true

destination:
  url: ./downloads

policy:
  skip_tags: true

run:
  state_path: ./state.db

Список планів та інспекція

Кожен запуск синхронізації відстежується в базі даних стану. Використовуйте команди plan для перегляду минулих запусків та їх детального прогресу. Усі команди plan підтримують --config (-f), тому ви можете використовувати той самий YAML конфіг від синхронізації.

Список усіх запусків

Переглядайте кожен записаний запуск зі статусом, кількістю об'єктів, переданими байтами, тривалістю та помилками. Вкажіть --state-path на вашу базу даних стану, або використовуйте -f для завантаження з конфігураційного файлу.

Команда CLI:

# List all sync runs
godwit plan list \
  --state-path ./tmp/state.db

# Or reuse the same config from your sync
godwit plan list -f migration.yml

Еквівалент у конфігураційному файлі:

# migration.yml (shared config)
run:
  state_path: ./tmp/state.db
  # run_id: <run-id>  ← used by inspect/objects

# source/destination config...

Інспекція запуску

Отримайте повний підсумок конкретного запуску — загальна кількість об'єктів, очікувані, завершені, невдалі та обсяг переданих даних. Використовуйте -f для завантаження run_id та state_path з конфігураційного файлу.

Команда CLI:

# Inspect a specific run
godwit plan inspect \
  --run-id <run-id> \
  --state-path ./tmp/state.db

# Or with config file
godwit plan inspect -f migration.yml

Еквівалент у конфігураційному файлі:

# migration.yml
run:
  run_id: <run-id>
  state_path: ./tmp/state.db

Перелік об'єктів плану

Перелік об'єктів у запуску з фільтрацією за статусом. Об'єднуйте статуси через + (наприклад pending+running) та фільтруйте за --storage-class. Використовуйте -f для завантаження run_id та state_path з конфігураційного файлу.

Команда CLI:

# List all objects in a run
godwit plan list objects all \
  --run-id <run-id> \
  --state-path ./tmp/state.db

# Or with config file
godwit plan list objects all -f migration.yml

# List pending + running objects
godwit plan list objects pending+running \
  -f migration.yml

# Filter by storage class
godwit plan list objects all \
  --storage-class GLACIER \
  -f migration.yml

Еквівалент у конфігураційному файлі:

# migration.yml
run:
  run_id: <run-id>
  state_path: ./tmp/state.db

Верифікація плану

Після завершення синхронізації перевірте, що всі передані об'єкти відповідають очікуваним контрольним сумам. Godwit порівнює MD5 кожного об'єкта з його .md5 sidecar файлом у призначенні.

Верифікація завершеного запуску

Запустіть верифікацію контрольних сум для всіх завершених об'єктів у запуску синхронізації. Вкажіть --destination на той самий endpoint, що використовувався під час синхронізації.

Команда CLI:

# Verify a completed sync run
godwit plan verify \
  --run-id <run-id> \
  --destination s3://dest-bucket/backup \
  --destination-endpoint localhost:9000 \
  --destination-access-key access_key \
  --destination-secret-key secret_key \
  --destination-secure=false \
  --state-path ./tmp/state.db \
  --ui

Еквівалент у конфігураційному файлі:

# verify.yml
run:
  run_id: <run-id>
  state_path: ./tmp/state.db

destination:
  url: s3://dest-bucket/backup
  endpoint: localhost:9000
  access_key: access_key
  secret_key: secret_key
  secure: false

output:
  ui: true

Відновлення верифікації

Якщо верифікація була перервана, використовуйте --resume, щоб пропустити вже верифіковані об'єкти та продовжити з місця зупинки.

Команда CLI:

# Resume an interrupted verification
godwit plan verify \
  --run-id <run-id> \
  --destination s3://dest-bucket/backup \
  --destination-endpoint localhost:9000 \
  --destination-access-key access_key \
  --destination-secret-key secret_key \
  --destination-secure=false \
  --state-path ./tmp/state.db \
  --resume --ui

Еквівалент у конфігураційному файлі:

# verify-resume.yml
run:
  run_id: <run-id>
  state_path: ./tmp/state.db

destination:
  url: s3://dest-bucket/backup
  endpoint: localhost:9000
  access_key: access_key
  secret_key: secret_key
  secure: false

output:
  ui: true

# Pass --resume on the CLI:
# godwit plan verify -f verify-resume.yml --resume

Обмеження швидкості та дросселювання

Контроль швидкості передачі, щоб не перевантажувати джерело або системи призначення. Необхідно для продакшен середовищ.

Обмеження частоти запитів

Обмежте кількість API-запитів на секунду за допомогою --rps. Корисно, коли джерело або призначення мають суворі квоти на запити.

Команда CLI:

# Limit to 50 requests per second
godwit sync \
  --source s3://source-bucket \
  --destination s3://dest-bucket \
  --rps 50 \
  ...

Еквівалент у конфігураційному файлі:

# rps-limit.yml
rate_limit:
  rps: 50

# ... source/destination config

Обмеження пропускної здатності

Обмежте швидкість читання в байтах на секунду за допомогою --read-bps. Запобігає перевантаженню мережевих каналів у робочий час.

Команда CLI:

# Limit read bandwidth to 100MB/s
godwit sync \
  --source s3://source-bucket \
  --destination s3://dest-bucket \
  --read-bps 104857600 \
  ...

Еквівалент у конфігураційному файлі:

# bandwidth-limit.yml
rate_limit:
  read_bps: 104857600  # 100MB/s

# ... source/destination config

Обмеження паралельних завантажень

Обмежте кількість одночасних завантажень за допомогою --max-inflight. Допомагає уникнути перевантаження призначення при великих об'єктах.

Команда CLI:

# Limit concurrent uploads
godwit sync \
  --source s3://source-bucket \
  --destination s3://dest-bucket \
  --max-inflight 10 \
  ...

Еквівалент у конфігураційному файлі:

# inflight-limit.yml
rate_limit:
  max_inflight: 10

# ... source/destination config

Комбіновані обмеження

Комбінуйте кілька обмежень для точного контролю. Всі обмеження застосовуються одночасно — найсуворіше обмеження діє в кожен момент.

Команда CLI:

# Combine limits for fine-grained control
godwit sync \
  --source s3://production-bucket \
  --destination s3://backup-bucket \
  --rps 25 \
  --read-bps 52428800 \
  --parallel 2 \
  --max-inflight 5 \
  ...

Еквівалент у конфігураційному файлі:

# production-limits.yml
rate_limit:
  rps: 25
  read_bps: 52428800   # 50MB/s
  max_inflight: 5

options:
  parallel: 2

# ... source/destination config

Міграція історії версій

Передача всіх версій кожного об'єкта, а не лише останньої. Коли версіоновані бакети містять об'єкти у холодних класах зберігання (GLACIER, DEEP_ARCHIVE, GLACIER_IR), Godwit автоматично пропускає ці версії та звітує про повноту.

Передача всіх версій

Використовуйте --version-mode all для перерахування та передачі кожної версії кожного об'єкта з бакету джерела. Кожна версія індивідуально порівнюється та передається до призначення.

Команда CLI:

# Transfer all object versions from source to destination
godwit sync \
  --source s3://source-bucket/data \
  --destination s3://dest-bucket/data \
  --source-endpoint source.storage.example.com \
  --source-access-key SOURCE_KEY \
  --source-secret-key SOURCE_SECRET \
  --destination-endpoint dest.storage.example.com \
  --destination-access-key DEST_KEY \
  --destination-secret-key DEST_SECRET \
  --version-mode all \
  --state-path ./tmp/state.db \
  --logs-dir ./tmp/logs \
  --brief

Еквівалент у конфігураційному файлі:

# version-history.yml
source:
  url: s3://source-bucket/data
  endpoint: source.storage.example.com
  access_key: SOURCE_KEY
  secret_key: SOURCE_SECRET

destination:
  url: s3://dest-bucket/data
  endpoint: dest.storage.example.com
  access_key: DEST_KEY
  secret_key: DEST_SECRET

versioning:
  mode: all

run:
  state_path: ./tmp/state.db

output:
  logs_dir: ./tmp/logs
  brief: true

Передача версій з певної дати

Використовуйте --version-mode "since:<RFC3339>" для передачі лише версій, створених після певної мітки часу. Це корисно для інкрементальних резервних копій версій, коли потрібні лише нещодавні зміни.

Команда CLI:

# Transfer only versions created after a specific date
godwit sync \
  --source s3://source-bucket/data \
  --destination s3://dest-bucket/data \
  --version-mode "since:2025-01-01T00:00:00Z" \
  --state-path ./tmp/state.db \
  ...

Еквівалент у конфігураційному файлі:

# version-since.yml
versioning:
  mode: "since:2025-01-01T00:00:00Z"

# ... source/destination config

Обробка Glacier та холодного сховища

Коли --version-mode all зустрічає об'єкти в класах зберігання GLACIER, DEEP_ARCHIVE або GLACIER_IR, ці версії автоматично пропускаються (вони потребують відновлення перед читанням). Godwit попереджає про glacier-об'єкти під час планування та звітує про часткову історію версій після завершення.

# Sync versioned bucket with mixed storage classes
# Glacier/Deep Archive versions are automatically skipped
godwit sync \
  --source s3://source-bucket/data \
  --destination s3://dest-bucket/data \
  --version-mode all \
  --state-path ./tmp/state.db \
  --brief \
  ...

# Example output:
# Planning...
# ⚠ Warning: 9 GLACIER objects detected.
#   Restore required before migration.
# Uploading...
# ⚠ 3 keys have partial version history
#   (some versions skipped due to Glacier storage class)
# Version History: 4 complete, 3 partial, 1 fully skipped

Результати історії версій

Після версіонованої синхронізації кожен ключ класифікується в один із трьох результатів залежно від того, як були оброблені його версії:

Повна історія

Усі версії цього ключа були успішно передані. Жодна версія не була у холодному сховищі.

Часткова історія ⚠

Деякі версії були передані, але інші пропущені через клас зберігання Glacier/Deep Archive. Історія ключа неповна у призначенні.

Повністю пропущено

Усі версії цього ключа перебувають у холодному сховищі. Нічого не було передано для цього ключа.

Інспекція історії версій

Після версіонованої синхронізації використовуйте plan inspect для перегляду повноти історії версій, та plan list objects з --partial-history для ідентифікації ключів з неповною історією.

# Inspect version history completeness for a run
godwit plan inspect --run-id <run-id> --state-path ./tmp/state.db

# Example output:
# Version History:
#   Complete History:      4 keys
#   Partial History:       3 keys    ⚠
#   Fully Skipped:         1 keys
#
# Storage classes detected:
#   STANDARD:             60.9%   14 objects   144 B
#   GLACIER:              39.1%   9 objects   143 B

# List keys with partial version history
godwit plan list objects all --partial-history \
  --run-id <run-id> --state-path ./tmp/state.db

# List all glacier-skipped objects
godwit plan list objects glacier \
  --run-id <run-id> --state-path ./tmp/state.db

Поведінка класів зберігання

Як кожен клас зберігання S3 обробляється під час версіонованих передач:

Клас зберіганняПоведінка
STANDARDПередається нормально. Усі версії доступні для копіювання.
STANDARD_IAПередається нормально. Те ж, що STANDARD, але з іншою тарифікацією S3.
GLACIERПропускається автоматично. Об'єкти потрібно відновити до STANDARD перед передачею. Версії позначаються статусом glacier.
DEEP_ARCHIVEПропускається автоматично. Найдовший час відновлення (до 48 годин). Та ж поведінка пропуску, що й GLACIER.
GLACIER_IRПропускається автоматично. Незважаючи на швидше отримання, ніж GLACIER, все одно потребує операції відновлення перед передачею.

Збереження Object Lock

Реплікація режимів утримання Object Lock та налаштувань юридичного утримання з джерела до призначення. При увімкненні Godwit зчитує конфігурацію блокування кожного об'єкта та застосовує таке ж утримання та юридичне утримання у призначенні.

Увімкнення Object Lock

Додайте --object-lock до команди синхронізації. Бакет призначення повинен мати увімкнений Object Lock. Godwit Sync зчитує політику утримання та юридичне утримання кожного об'єкта з джерела та застосовує їх при записі у призначення.

Команда CLI:

# Sync with Object Lock preservation
godwit sync \
  --source s3://source-bucket/data \
  --destination s3://dest-bucket/data \
  --source-endpoint source.storage.example.com \
  --source-access-key SOURCE_KEY \
  --source-secret-key SOURCE_SECRET \
  --destination-endpoint dest.storage.example.com \
  --destination-access-key DEST_KEY \
  --destination-secret-key DEST_SECRET \
  --version-mode all \
  --object-lock \
  --state-path ./tmp/state.db \
  --brief

Еквівалент у конфігураційному файлі:

# object-lock.yml
source:
  url: s3://source-bucket/data
  endpoint: source.storage.example.com
  access_key: SOURCE_KEY
  secret_key: SOURCE_SECRET

destination:
  url: s3://dest-bucket/data
  endpoint: dest.storage.example.com
  access_key: DEST_KEY
  secret_key: DEST_SECRET

versioning:
  mode: all

object_lock:
  enabled: true

run:
  state_path: ./tmp/state.db

output:
  brief: true

Режими утримання

Godwit Sync зберігає тип блокування кожної версії. Після синхронізації кожна версія класифікується за конфігурацією блокування:

GOVERNANCE

Утримання з можливістю обходу. Привілейовані користувачі можуть зняти блокування до дати утримання.

COMPLIANCE

Суворе утримання. Жоден користувач, включаючи root, не може видалити або скоротити період утримання.

Юридичне утримання

Безстрокове утримання, незалежне від режиму утримання. Повинно бути явно знято перед видаленням об'єкта.

Відсутнє

Конфігурація Object Lock відсутня для цієї версії. Передано без налаштувань блокування.

Перегляд статусу Object Lock

Після синхронізації з --object-lock використовуйте plan inspect для перегляду розподілу типів блокування серед усіх переданих версій.

# Inspect Object Lock statistics for a run
godwit plan inspect --run-id <run-id> --state-path ./tmp/state.db

# Example output:
# Object Lock:
#   Governance:     12 versions
#   Compliance:      4 versions
#   Legal Hold:      2 versions
#   None:           38 versions

Відновлення та recovery

Безпечне переривання та відновлення передач. База даних стану відстежує прогрес, тому ви ніколи не втратите роботу.

Команда CLI:

# Step 1: Plan the transfer
godwit sync \
  --source s3://large-bucket \
  --destination s3://backup-bucket \
  --state-path ./migration.db \
  --plan-only \
  ...

# Step 2: Start execution (can be interrupted with Ctrl+C)
godwit sync \
  --source s3://large-bucket \
  --destination s3://backup-bucket \
  --state-path ./migration.db \
  --resume \
  ...

# Step 3: After interruption, resume from where you left off
godwit sync \
  --source s3://large-bucket \
  --destination s3://backup-bucket \
  --state-path ./migration.db \
  --resume \
  ...

Еквівалент у конфігураційному файлі:

# migration.yml
source:
  url: s3://large-bucket
  # access_key, secret_key, endpoint...

destination:
  url: s3://backup-bucket
  # access_key, secret_key, endpoint...

run:
  state_path: ./migration.db

# Step 1: Plan only
# godwit sync -f migration.yml --plan-only

# Step 2: Start execution
# godwit sync -f migration.yml --resume

# Step 3: Resume after interruption
# godwit sync -f migration.yml --resume

Моніторинг Prometheus

Інтегруйте Godwit Sync зі своїм стеком моніторингу Prometheus.

Команда CLI:

# Run sync with metrics enabled
godwit sync \
  --source ./data \
  --destination s3://my-bucket/backup \
  --destination-endpoint localhost:9000 \
  --destination-access-key access_key \
  --destination-secret-key secret_key \
  --destination-secure=false \
  --status-addr :8080 \
  --drain-timeout 30

Еквівалент у конфігураційному файлі:

# prometheus-sync.yml
source:
  url: ./data

destination:
  url: s3://my-bucket/backup
  endpoint: localhost:9000
  access_key: access_key
  secret_key: secret_key
  secure: false

status:
  addr: ":8080"
  drain_timeout: 30

Додайте scrape job до вашої конфігурації Prometheus:

# prometheus.yml
scrape_configs:
  - job_name: godwit
    static_configs:
      - targets: ["localhost:8080"]

Доступні endpoints

/metrics

Prometheus-формат метрик, включаючи лічильники, гістограми та gauge ETA.

Метрики Prometheus →

/status

JSON підсумок поточного запуску з прогресом та статистикою.

Статус-ендпоінт →
← Швидкий стартДовідник CLI →

На цій сторінці

  • Локальна файлова система до S3
  • S3 до локальної файлової системи
  • Міграція S3 до S3
    • Передача між кластерами S3
    • Обмежені IAM-дозволи
  • Список планів та інспекція
    • Список усіх запусків
    • Інспекція запуску
    • Перелік об'єктів плану
  • Верифікація плану
    • Верифікація завершеного запуску
    • Відновлення верифікації
  • Обмеження швидкості та дросселювання
    • Обмеження частоти запитів
    • Обмеження пропускної здатності
    • Обмеження паралельних завантажень
    • Комбіновані обмеження
  • Міграція історії версій
    • Передача всіх версій
    • Передача версій з певної дати
    • Обробка Glacier та холодного сховища
    • Результати історії версій
    • Інспекція історії версій
    • Поведінка класів зберігання
  • Збереження Object Lock
    • Увімкнення Object Lock
    • Режими утримання
    • Перегляд статусу Object Lock
  • Відновлення та recovery
  • Моніторинг Prometheus
    • Доступні endpoints
Godwit Sync

Міграція та синхронізація даних виробничого рівня для великих об'єктних сховищ. Контроль, передбачуваність та безпека у масштабі.

Продукт

  • Ціни
  • Документація
  • Changelog

Юридична інформація

  • Умови надання послуг
  • Угода користувача
  • Політика конфіденційності

© 2026 Godwit Sync. Усі права захищено.

Версія v1.1.5