A simple ETCD export/import tool for backup and restore operations.
- Export ETCD data to JSON file
- Import JSON file to ETCD
- Support key prefix filtering
- Support limiting number of exported keys
Export all keys from ETCD cluster:
etcd-json-converter export \
--endpoint=10.10.0.3:2379,10.10.0.4:2379,10.10.0.5:2379 \
--file=/tmp/output.jsonExport with prefix and limit:
etcd-json-converter export \
--endpoint=10.10.0.3:2379,10.10.0.4:2379,10.10.0.5:2379 \
--prefix=/your/prefix \
--limit=100 \
--file=/tmp/output.jsonImport data from JSON file to ETCD cluster:
etcd-json-converter import \
--endpoint=10.10.0.3:2379,10.10.0.4:2379,10.10.0.5:2379 \
--file=/tmp/input.jsonCheck ETCD cluster status:
etcd-json-converter status \
--endpoint=10.10.0.3:2379Start ETCD and build the tool:
docker compose up -d etcd
docker compose builddocker compose run --rm etcd-json-converter export \
-e etcd:2379 \
-f /data/backup.jsondocker compose run --rm etcd-json-converter import \
-e etcd:2379 \
-f /data/backup.jsondocker compose run --rm etcd-json-converter status -e etcd:2379docker compose run --rm etcd-json-converter export \
-e 10.10.0.3:2379,10.10.0.4:2379 \
-f /data/backup.jsonNote: Exported files are saved in
./datadirectory.
You can modify the JSON file before importing for data migration:
# Replace domain names
sed -i 's/baidu.com/google.com/g' /tmp/input.json
# Replace IP addresses
sed -i 's/192.168.1.1/10.0.0.1/g' /tmp/input.json| Option | Short | Description |
|---|---|---|
--endpoint |
-e |
ETCD endpoints (comma-separated) |
--file |
-f |
JSON file path (default: load.json) |
--prefix |
-p |
Key prefix for export (default: /) |
--limit |
-l |
Limit number of keys to export (default: all) |