1、账户access_token
accessToken=$(curl -s -X POST 'http://localhost:30048/nacos/v1/auth/login' -H 'Content-Type: application/x-www-form-urlencoded' -d 'username=nacos&password=nacos' |jq -r '.accessToken')

2、获取配置

curl -s -X GET "http://127.0.0.1:30048/nacos/v2/cs/config?accessToken=${accessToken}&dataId=test.txt&group=DEFAULT_GROUP&namespaceId=public"
#或
curl -X GET "http://127.0.0.1:30048/nacos/v1/cs/configs?dataId=demo02.yml&group=demo_group&tenant=demo&accessToken=${accessToken}"

3、发布配置
curl -d 'dataId=test.txt' \
-d 'group=DEFAULT_GROUP' \
-d 'namespaceId=public' \
-d 'content=aNewTest' \
-X POST "http://127.0.0.1:8848/nacos/v2/cs/config?accessToken=${accessToken}"

方法一
curl -d "dataId=demo.yml" \
-d "group=demo_group" \
-d "namespaceId=demo" \
-d "type=yaml" \
-d "content=$(cat demo.yml)" \
-X POST "http://127.0.0.1:30048/nacos/v2/cs/config?accessToken=${accessToken}"

方法二
curl -d "dataId=demo.yml" \
-d "group=demo_group" \
-d "namespaceId=demo" \
-d "type=yaml" \
--data-urlencode "content@/data/nacos/experience/demo.yml" \
-X POST "http://127.0.0.1:30048/nacos/v2/cs/config?accessToken=${accessToken}"

方法三
curl -H "Content-Type: multipart/form-data" \
-F "policy=OVERWRITE" \
-F "file=@nacos_config_export_20251224143456.zip" \
-F "import=true" \
-F "accessToken=${accessToken}" \
-X POST "http://127.0.0.1:30048/nacos/v1/cs/configs?namespace=demo"

4、查看已有的配置文件
url -s -X GET "http://127.0.0.1:30048/nacos/v2/cs/history/configs?namespaceId=demo&accessToken=${accessToken}"|jq -r '.data[].dataId'

5、备份配置
echo "$(curl -s -X GET "http://127.0.0.1:30048/nacos/v2/cs/config?dataId=demo.yml.clone.clone&group=demo_group&namespaceId=demo&accessToken=${accessToken}" |jq -r '.data')" > backup.yml
#或
curl -X GET "http://127.0.0.1:30048/nacos/v1/cs/configs?dataId=demo02.yml&group=demo_group&tenant=demo&accessToken=${accessToken}" -o backup.yml


6、克隆配置文件
主要结合【获取配置】或【备份配置】+【发布配置】进行,实现api克隆配置文件或本地修改发布的目的
#!/bin/bash
namespace=demo
target_namespace=demo
accessToken="eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTc2NjU4Mjc2OX0.buuT5kS-BQEipaijQwXMKXDJ98NORfv46nTOtUjx54Y"
keyword=02
nacos_server=127.0.0.1
nacos_port=30048
clone_suffix="clone"
nacos_url="${nacos_server}:${nacos_port}/nacos/v2/cs/config"
curl -s -X GET "http://${nacos_server}:${nacos_port}/nacos/v2/cs/history/configs?namespaceId=${namespace}&accessToken=${accessToken}"|jq --arg kw "${keyword}" '.data[] | select(.dataId | contains($kw)) | {dataId, group, type}' > filtered_configs.json
if [ ! -s "filtered_configs.json" ]; then
echo "未找到包含关键字 '${keyword}' 的配置。"
exit 0
fi
echo "找到以下待克隆的配置:"
jq -r '.dataId' filtered_configs.json
echo "开始克隆到命名空间 '${target_namespace}'..."
jq -c '.' filtered_configs.json | while read config; do
data_id=$(echo "$config" | jq -r '.dataId')
group=$(echo "$config" | jq -r '.group')
type=$(echo "$config" | jq -r '.type')
get_url="${nacos_url}?dataId=${data_id}&group=${group}&namespaceId=${namespace}&accessToken=${accessToken}"
content=$(curl -s -X GET "http://${get_url}" |jq -r '.data')
echo "${content}" > source/${data_id}
post_url="${nacos_url}?accessToken=${accessToken}"
response=$(curl -s -X POST "http://${post_url}" \
-d "dataId=${data_id}.${clone_suffix}" \
-d "group=${group}" \
-d "namespaceId=${target_namespace}" \
-d "type=yaml" \
--data-urlencode "content@source/${data_id}" |jq -r '.data')
if [ "$response" = "true" ]; then
echo "成功克隆: ${data_id}.${clone_suffix} (Group: ${group})"
else
echo "克隆失败: ${data_id}.${clone_suffix}, 响应: ${response}"
fi
done


评论区