Покрокові посібники
Практичні посібники для типових сценаріїв міграції та робочих процесів.
Локальна файлова система до 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: trueS3 до локальної файлової системи
Завантажте об'єкти з 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 для перегляду минулих запусків та їх детального прогресу.
Список усіх запусків
Переглядайте кожен записаний запуск зі статусом, кількістю об'єктів, переданими байтами, тривалістю та помилками. Вкажіть --state-path на вашу базу даних стану.
# List all sync runs
godwit plan list \
--state-path ./tmp/state.dbІнспекція запуску
Отримайте повний підсумок конкретного запуску — загальна кількість об'єктів, очікувані, завершені, невдалі та обсяг переданих даних.
# Inspect a specific run
godwit plan inspect \
--run-id <run-id> \
--state-path ./tmp/state.dbПерелік об'єктів плану
Перелік об'єктів у запуску з фільтрацією за статусом. Об'єднуйте статуси через + (наприклад pending+running) та фільтруйте за --storage-class.
# List all objects in a run
godwit plan list objects all \
--run-id <run-id> \
--state-path ./tmp/state.db
# List pending + running objects
godwit plan list objects pending+running \
--run-id <run-id>
# Filter by storage class
godwit plan list objects all \
--storage-class GLACIER \
--run-id <run-id>Верифікація плану
Після завершення синхронізації перевірте, що всі передані об'єкти відповідають очікуваним контрольним сумам. Godwit порівнює MD5 кожного об'єкта з його .md5 sidecar файлом у призначенні.
Верифікація завершеного запуску
Запустіть верифікацію контрольних сум для всіх завершених об'єктів у запуску синхронізації. Вкажіть --destination на той самий endpoint, що використовувався під час синхронізації.
# 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Відновлення верифікації
Якщо верифікація була перервана, використовуйте --resume, щоб пропустити вже верифіковані об'єкти та продовжити з місця зупинки.
# 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Обмеження швидкості та дросселювання
Контроль швидкості передачі, щоб не перевантажувати джерело або системи призначення. Необхідно для продакшен середовищ.
Команда CLI:
# Limit to 50 requests per second
godwit sync \
--source s3://source-bucket \
--destination s3://dest-bucket \
--rps 50 \
...
# Limit read bandwidth to 100MB/s
godwit sync \
--source s3://source-bucket \
--destination s3://dest-bucket \
--read-bps 104857600 \
...
# Limit concurrent uploads
godwit sync \
--source s3://source-bucket \
--destination s3://dest-bucket \
--max-inflight 10 \
...
# 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 \
...Еквівалент у конфігураційному файлі:
# rate-limit-rps.yml
rate_limit:
rps: 50
# rate-limit-bandwidth.yml
rate_limit:
read_bps: 104857600
# rate-limit-inflight.yml
rate_limit:
max_inflight: 10
# combined-limits.yml
rate_limit:
rps: 25
read_bps: 52428800
max_inflight: 5
options:
parallel: 2Відновлення та recovery
Безпечне переривання та відновлення передач. База даних стану відстежує прогрес, тому ви ніколи не втратите роботу.
# 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
# Use the same state-path and --resume flag
godwit sync \
--source s3://large-bucket \
--destination s3://backup-bucket \
--state-path ./migration.db \
--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Еквівалент у конфігураційному файлі:
# 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"Додайте scrape job до вашої конфігурації Prometheus:
# prometheus.yml
scrape_configs:
- job_name: godwit
static_configs:
- targets: ["localhost:8080"]Доступні endpoints
/metrics
Prometheus-формат метрик, включаючи лічильники, гістограми та gauge ETA.
Метрики Prometheus →