학습 가이드
#20주 실습 커리큘럼

sed 치환과 파일 무결성 확인

_리눅스 실습 커리큘럼 8/40 · 터미널에 익숙해지기 (4주차)_

1단계 마지막 편입니다. 지금까지 읽고 걸러낸 파일을 이번엔 일괄로 바꾸고, 바꾸기 전 상태를 남기고, 기준과 달라진 파일을 찾아냅니다. sed 로 여러 설정 파일을 한 번에 고치는 법과 tar 백업, sha256 해시 대조, 하드링크로 파일 상태를 지키고 확인하는 법을 다룹니다.

sed 한 줄로 여러 파일 고치기

서버 설정 세 개를 vi 로 하나씩 열면 파일 수만큼 실수할 기회가 생깁니다. sed 의 s/찾을것/바꿀것/ 은 파일 여러 개를 한 번에 처리하고, -e 를 여러 번 주면 치환 규칙도 여러 개를 한 번에 적용합니다.

sed 's/^port=80$/port=81/' sample.conf              # 화면에만 출력(원본 그대로)
sed -i.orig -e 's/^a=1$/a=2/' -e 's/^b=x$/b=y/' *.ini
                                                    # 각 파일을 고치고 원본은 파일명.orig 로 보존
  • -i 뒤에 붙인 문자열은 공백 없이 이어 써야 백업 접미사로 인식됩니다. -i .bak 처럼 띄우면 뜻이 달라집니다.
  • ^ 와 $ 로 줄 전체를 고정하면 port=80 과 admin_port=80, port=8080 을 구분합니다. 패턴이 느슨하면 바꾸면 안 되는 줄까지 건드립니다.
  • 먼저 -i 없이 실행해 결과를 눈으로 확인하세요. 그리고 -i.bak 을 두 번 실행하면 백업이 이미 바뀐 내용으로 덮어써진다는 점도 기억하세요.

tar 로 디렉터리 통째로 남기기

아카이브 안의 경로는 tar 를 실행한 위치 기준으로 기록됩니다. 원하는 경로로 시작하게 하려면 -C 로 부모 디렉터리에 들어간 뒤 대상 이름만 넘깁니다.

tar -czf /tmp/site.tar.gz -C /srv site      # 내부 경로가 site/ 로 시작
tar -tzf /tmp/site.tar.gz                   # 실제 수록 항목을 한 줄에 하나씩
  • tar 는 기본적으로 심볼릭 링크를 링크 그대로 담습니다. -h(--dereference) 를 붙이면 대상 파일 내용으로 바뀌어 들어가니 주의하세요.
  • 수록 목록은 머릿속 예상이 아니라 -t 로 아카이브에서 직접 뽑아야 정확합니다.

해시로 달라진 파일 골라내기

sha256sum -c 는 기준 목록의 각 파일을 다시 계산해 경로: OK 또는 경로: FAILED 로 알려 줍니다.

sha256sum -c ref.sha256                        # 전체 결과
sha256sum -c ref.sha256 2>/dev/null | grep ': FAILED$' | cut -d: -f1 | sort
  • 목록 속 경로가 상대 경로라면, 그 목록을 만든 위치에서 실행해야 파일을 찾습니다.
  • 결과에서 상태 문자열을 떼어 내고 경로만 남긴 뒤 sort 로 정렬하는 흐름을 익혀 두세요.

하드링크와 심볼릭 링크의 차이

하드링크는 같은 inode 에 이름을 하나 더 붙이는 것이고, 심볼릭 링크는 경로를 가리키는 별도 파일입니다.

ln original.txt alias.txt       # 하드링크(-s 없음)
ls -li original.txt alias.txt   # 첫 열 inode 번호가 같으면 성공

ln -s 를 습관처럼 붙이면 심볼릭 링크가 되어 inode 가 달라집니다.

이번 주 과제로 확인하기

  • sed 로 설정 파일 일괄 치환하기 — ^…$ 로 좁힌 두 치환을 한 번에 적용하고, .bak 백업을 남기면서 다른 줄은 그대로 두는지
  • 설정 디렉터리 tar 백업과 변조 검출 — -C 로 내부 경로를 맞추고 링크를 보존한 아카이브, -t 수록 목록, sha256sum -c 로 골라낸 정렬된 경로, 같은 inode 의 하드링크를 만드는지

다음 편

다음 편은 권한 기초: chmod 숫자·기호 표기 완전 정복 입니다. 화·금요일에 이어집니다.

<!-- publish_key:linux-path-20w-p08-post -->

댓글 0

아직 댓글이 없습니다. 궁금한 점이나 풀이 경험을 남겨 보세요.