Joo's

특정 이름 패턴을 가진 configmap을 yaml으로 추출해서 저장하기

(aaa, bbb, ccc, ddd로 시작하는 configmap만)

#!/bin/bash

# ConfigMap 이름 패턴 리스트
patterns=("aaa" "bbb" "ccc" "ddd")

# 저장할 디렉토리 생성 (존재하지 않으면 생성)
output_dir="configmaps"
mkdir -p "$output_dir"

# 각 패턴에 대해 ConfigMap 검색 및 YAML 파일로 저장
for pattern in "${patterns[@]}"; do
    # 해당 패턴으로 시작하는 ConfigMap 목록 가져오기
    configmaps=$(kubectl get configmap --no-headers -o custom-columns=":metadata.name" | grep "^$pattern")

    # 각 ConfigMap을 YAML 파일로 저장
    for configmap in $configmaps; do
        kubectl get configmap "$configmap" -o yaml > "$output_dir/$configmap.yaml"
        sed -i '/uid:/d' "$output_dir/$configmap.yaml"
        echo "Saved $configmap.yaml"
    done
done

echo "All matching ConfigMaps have been saved to the $output_dir directory."

sh 파일 만들어서 내용 복붙하고

실행 권한 주고 ./파일명.sh 로 실행하기

chmod +x 파일명.sh
./파일명.sh

#!/bin/bash

# ConfigMap 이름 패턴 리스트
patterns=("aaa" "bbb" "ccc" "ddd")

# 저장할 디렉토리 생성 (존재하지 않으면 생성)
configmap_dir="configmaps"
mkdir -p "$configmap_dir"

# 각 패턴에 대해 ConfigMap 검색 및 YAML 파일로 저장
for pattern in "${patterns[@]}"; do
    # 해당 패턴으로 시작하는 ConfigMap 목록 가져오기
    configmaps=$(kubectl get configmap --no-headers -o custom-columns=":metadata.name" | grep "^$pattern")

    # 각 ConfigMap을 YAML 파일로 저장
    for configmap in $configmaps; do
        kubectl get configmap "$configmap" -o yaml > "$configmap_dir/$configmap.yaml"
        sed -i '/uid:/d' "$configmap_dir/$configmap.yaml"
        echo "Saved $configmap.yaml"
    done
done

echo "All matching ConfigMaps have been saved to the $configmap_dir directory."

# 기존에 저장한 파일들을 90개씩 나눠서 다른 디렉토리에 저장

# 원본 파일이 있는 디렉토리
original_dir="configmaps"

# 파일을 나눠서 저장할 기준
batch_size=90

# 파일 목록 가져오기
files=("$original_dir"/*.yaml)

# 총 파일 수
total_files=${#files[@]}

# 몇 번째 그룹인지 추적할 변수
batch_number=1

# 각 배치마다 파일을 저장할 폴더 생성 및 이동
for ((i=0; i<total_files; i+=batch_size)); do
    # 새로 만들 폴더 이름 (ex: configmaps1, configmaps2, ...)
    batch_output_dir="${original_dir}${batch_number}"
    mkdir -p "$batch_output_dir"

    # 해당 배치의 파일 복사
    for ((j=i; j<i+batch_size && j<total_files; j++)); do
        cp "${files[j]}" "$batch_output_dir/"
    done

    echo "Saved ${batch_size} files to $batch_output_dir"
    
    # 배치 번호 증가
    ((batch_number++))
done

echo "All files have been organized into batches."

 

폴더 내 파일 개수 세는 명령어

ls -1 | wc -l
#!/bin/bash

# YAML 파일이 있는 디렉토리
dir="your_directory"

# 디렉토리 내 모든 YAML 파일에 대해 작업 수행
for yaml_file in "$dir"/*.yaml; do
    echo "Processing $yaml_file..."

    # 삭제할 줄을 미리 추출하여 임시 파일에 저장
    deleted_lines=$(grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' "$yaml_file")

    if [ -n "$deleted_lines" ]; then
        # 삭제할 내용 출력
        echo "Deleted lines from $yaml_file:"
        echo "$deleted_lines"
        
        # 숫자.숫자.숫자.숫자 형식이 있는 줄을 삭제
        sed -i '/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/d' "$yaml_file"
    else
        echo "No lines to delete in $yaml_file."
    fi

    echo "--------------------------------------"
done

echo "All YAML files in $dir have been processed."
profile

Joo's

@JooJY

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!