Hero Image

Elasticsearch Snapshot Backup on OpenBSD 7.5

Elasticsearch Snapshot Backup on OpenBSD 7.5

Step 1 – Register a snapshot repository (filesystem)

# Create backup directory
mkdir -p /var/backups/elasticsearch
chown elasticsearch:elasticsearch /var/backups/elasticsearch

Add to elasticsearch.yml:

path.repo: ["/var/backups/elasticsearch"]

Register the repo via API:

curl -X PUT "https://localhost:9200/_snapshot/my_backup" \
    -u elastic:YourPassword \
    --cacert /etc/elasticsearch/certs/http_ca.crt \
    -H 'Content-Type: application/json' \
    -d '{
        "type": "fs",
        "settings": {
            "location": "/var/backups/elasticsearch",
            "compress": true
        }
    }'

Step 2 – Take a snapshot

curl -X PUT "https://localhost:9200/_snapshot/my_backup/snapshot_$(date +%F)?wait_for_completion=true" \
    -u elastic:YourPassword \
    --cacert /etc/elasticsearch/certs/http_ca.crt

Step 3 – List snapshots

curl -u elastic:YourPassword \
    --cacert /etc/elasticsearch/certs/http_ca.crt \
    'https://localhost:9200/_snapshot/my_backup/_all?pretty'

Step 4 – Restore a snapshot

# Close index first if restoring into existing cluster:
curl -X POST "https://localhost:9200/my-index/_close" \
    -u elastic:YourPassword --cacert /etc/elasticsearch/certs/http_ca.crt

# Restore:
curl -X POST "https://localhost:9200/_snapshot/my_backup/snapshot_2026-05-07/_restore" \
    -u elastic:YourPassword --cacert /etc/elasticsearch/certs/http_ca.crt \
    -H 'Content-Type: application/json' \
    -d '{"indices": "my-index"}'