adsense_in_article_test


[bash: mktemp] 안전하게 임시 파일/디렉토리 만들기 리눅스 bash script

무작위로 이름이 정해지고 해당 사용자에게만 접근권한이 있는 임시 파일 또는 임시 디렉토리를 만들고 싶다면 mktemp 명령을 활용하자.
일단 아래의 예시를 보자.

mktemp myfile_XXXX.tmp
myfile_iX9v.tmp (파일이 생성된 후, 이름이 출력된다)

현재 디렉토리에서 "myfile_"로 시작되고 바로 뒤 4개 글자가 무작위로 정해지면서 확장자가 .tmp인 파일을 만든 후 파일 이름이 화면에 출력되었다. 이름에서 'X'라고 된 부분이 무작위로 바뀌며, 최소한 3개 이상의 'X'를 지정해야 한다.

임시 디렉토리를 만들고 싶다면 -d 옵션을 이용.

mktemp -d mydir_XXXX
mydir_jKuI (디렉토리가 생성된 후, 이름이 출력된다)

그냥 touch 또는 mkdir 명령을 사용해도 될 것 같은데 굳이 mktemp 명령이 필요한 이유는 무엇일까?

사실 홈 디렉토리에서 임시 파일을 만든다면 mktemp 명령을 굳이 쓰지 않아도 될 것 같다. 하지만 메모리 영역(RAM)에 연결된 /dev/shm 디렉토리에 임시 파일을 만들고 싶다면 되도록 mktemp 명령을 사용하는 것이 안전하다. /dev/shm 디렉토리의 권한이 777(rwxrwxrws)로 설정되어 있어 모든 사용자가 접근할 수 있기 때문이다.

반복적인 읽기/쓰기가 이루어지는 경우에 임시 파일을 일종의 램디스크인 /dev/shm 디렉토리에 만들면 디스크보다 훨씬 빠르다는 장점이 있다. 접근권한의 문제는 mktemp 명령으로 해결하면 된다. mktemp 명령으로 생성된 임시 파일의 권한은 600(rw-------), 임시 디렉토리의 권한은 700(rwx------)이다. 즉, 소유자만 접근 가능.

mktemp /dev/shm/myfile_XXXX.tmp
/dev/shm/myfile_BW66.tmp (파일 생성후 파일명 출력)

스크립트에서는 아래의 예시를 참고해서 활용해 보자. mktemp 명령의 출력 결과를 변수에 할당해서 사용하면 되겠다.

# 임시 디렉토리를 만들어 이름을 tmp_dir 변수에 할당
tmp_dir=`mktemp -d /dev/shm/mydir_XXXX`
# 임시 디렉토리 안에 임시 파일을 만들고 이름을 tmp_file 변수에 할당
tmp_file=`mktemp $tmp_dir/myfile_XXXX.tmp`
echo "temp file created: $tmp_file"
# 이제 임시 파일을 사용하면 된다. 문자열 abcde를 임시 파일에 저장
echo "abcde" > $tmp_file
...
# 임시 파일 삭제
rm $tmp_file
# 임시 디렉토리 삭제
rm -r $tmp_dir



핑백

덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.



통계 위젯 (화이트)

22207
3300
2298700

2019 대표이글루_IT

B-Side