[FS] 파일 생성 및 삭제 과정 분석
🫧 스크립트 자동화 환경 구축
- 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
-
chmod +x test.bash : 실행 권한 주기
-
./test.bash & : 백그라운드 실행
✨ 옵션
| 옵션 | 설명 |
|——————–|—————————————————|
| -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
sudo dd if=/dev/nvme0n1p2 of=/mnt/hgfs/’File System’/test.dd bs=4M count=1024
mount mnt/hgfs/’File System’
sleuthkit? 도구 → blkcat 이미지 파일과 파라마티를 넣어 특정 위치를 알 수 있음. blkls (할당/비할당 영역 보여줌)