🫧 스크립트 자동화 환경 구축

  1. bash 스크립트를 통해 파일 생성 및 삭제 트리거 자동화
#!/bin/bash

# 현재 위치에서 트리거되도록 설정
WATCH_DIR="."

# 생성 및 삭제 시 트리거
inotifywait -m -e create -e delete --format '%w%f %e' "$WATCH_DIR" | while read FILE EVENT
do
    # 파일 생성 시 트리거 
    if [[ "$EVENT" == "CREATE" ]]; then
        echo "event trigger: $EVENT $FILE" | tee -a "$LOG_FILE"

        # 파일 메타데이터 출력
        stat "$FILE" | tee -a "$LOG_FILE"

        # 파일 헤더(시그니처) 분석
        xxd -l 16 "$FILE" | tee -a "$LOG_FILE" # 처음 16바이트만 출력 (파일 시그니처 확인)

        # 파일 타입 확인
        file "$FILE" | tee -a "$LOG_FILE"

    # 파일 삭제 시 트리거
    elif [[ "$EVENT" == "DELETE" ]]; then
        echo "Delete File: $FILE" | tee -a "$LOG_FILE"
    fi
done

image

  1. chmod +x test.bash : 실행 권한 주기

  2. ./test.bash & : 백그라운드 실행

image

✨ 옵션

| 옵션 | 설명 | |——————–|—————————————————| | -m | 지속적으로 감시 (monitor) | | -e <이벤트> | 특정 이벤트만 감시 | | -r | 디렉터리 내부의 하위 폴더까지 감시 (recursive) | | -q | 불필요한 출력 제거 (quiet) | | --format '<형식>' | 출력 형식 지정 | | --timeout <초> | 지정한 시간 후 자동 종료 |

✨ 이벤트 종류

| 이벤트 | 설명 | |—————|—————————————————-| | access | 파일이 읽힐 때 (예: cat file.txt) | | modify | 파일이 수정될 때 | | attrib | 파일 속성이 변경될 때 (예: chmod, chown 등) | | close_write | 파일이 쓰기 모드에서 닫힐 때 | | close_nowrite| 파일이 읽기 모드에서 닫힐 때 | | create | 파일 또는 디렉터리가 생성될 때 | | delete | 파일 또는 디렉터리가 삭제될 때 | | delete_self | 감시 중인 파일이 삭제될 때 | | move_self | 감시 중인 파일이 이동될 때 | | moved_from | 파일이 다른 곳으로 이동될 때 (잘려나감) | | moved_to | 파일이 이동되어 들어올 때 | | open | 파일이 열릴 때 |

현재 어디에 마운트되었는지 알고 싶다면 df . 명령어를 사용하면 된다.

✨ raw 이미지 생성

sudo dd if=/dev/sdX of=/path/to/output.img bs=4M status=progress

🫧 파일 생성 과정 분석

🫧 파일 삭제 과정 분석

🫧 fstrim 삭제 과정 분석

삭제 전 파일 리스트와 삭제 후 파일 리스트를 비교하는 스크립트는 아래와 같다.

fstrim 끄려면 다음과 같이 입력하면 된다.

systemctl disable fstrim.timer

#!/bin/bash

# 디스크와 마운트 포인트 설정
MOUNT_POINT="/mnt/test_disk"
DEVICE="/dev/loop3p1"

# fstrim 활성화 전 상태 확인 (삭제된 파일 찾기)
echo "before strim"
sudo debugfs $DEVICE -R "lsdel" > deleted_before.txt
echo "Save delete file list"

# fstrim 실행
echo "Start fstrim"
sudo fstrim $MOUNT_POINT
echo "Finish fstrim"

# fstrim 활성화 후 상태 확인 (삭제된 파일 찾기)
echo "Check State"
sudo debugfs $DEVICE -R "lsdel" > deleted_after.txt

# 차이점 분석
echo "before vs after"
diff deleted_before.txt deleted_after.txt

image

image

sudo dd if=/dev/nvme0n1p2 of=/mnt/hgfs/’File System’/test.dd bs=4M count=1024

mount mnt/hgfs/’File System’

sleuthkit? 도구 → blkcat 이미지 파일과 파라마티를 넣어 특정 위치를 알 수 있음. blkls (할당/비할당 영역 보여줌)