๋ฆฌ๋ ์ค mkdir ์ฌ์ฉ๋ฒ์ ๊ฐ์ฅ ์ฝ๊ฒ ์ ๋ฆฌํ ์ค์ ํ ๊ฐ์ด๋์ ๋๋ค. ์ต์ ์ค๋ช , ์์ , ์ค๋ฅ ํด๊ฒฐ, OpenWrt·์๋ฒ ๋๋ ํ์ฉ๊น์ง ํฌํจํ ์ต๊ณ ์ ์ค๋ช ์์ ๋๋ค.
๋ฆฌ๋
์ค์์ ๊ฐ์ฅ ๋จผ์ ๋ฐฐ์ฐ๋ ๋ช
๋ น์ด ์ค ํ๋๊ฐ ๋ฐ๋ก mkdir์ด๋ค.
ํ์ง๋ง ๊ทธ๋ฅ “ํด๋ ๋ง๋๋ ๋ช
๋ น์ด” ์ ๋๋ก๋ง ์ดํดํ๋ฉด ์ค์ ์ด์·๊ฐ๋ฐ ํ๊ฒฝ์์ ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋งค์ฐ ์์ฃผ ๋ฐ์ํ๋ค.
์๋ฅผ ๋ค์ด:
- ์๋น์ค ์ด๊ธฐํ ์คํฌ๋ฆฝํธ๊ฐ ๋ก๊ทธ ๋๋ ํ ๋ฆฌ ๋ฏธ์กด์ฌ๋ก ํฌ๋์
- OpenWrt ๊ฐ์ ์๋ฒ ๋๋ ์ฅ๋น์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ชป๋ ์์ญ์ ๋ง๋ค์ด ์ค์ ์ด ๋ ์๊ฐ
- ์ค์น/๋ฐฐํฌ ์คํฌ๋ฆฝํธ์์ ์์ ๋๋ ํ ๋ฆฌ๊ฐ ์์ด ์คํ ์คํจ
- C ์ฝ๋ ์์ฑ ์ค mkdir ์คํจ ์์ธ์ ๋ชฐ๋ผ errno ๋ถ์ ๋ํญ
์ด๋ฐ ๋ฌธ์ ๋ ๋๋ถ๋ถ mkdir ์ฌ์ฉ๋ฒ์ ์ ํํ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ๊ธ์์๋ mkdir์ ๊ธฐ๋ณธ๋ถํฐ ์ค์ ํจํด, ์ค๋ฅ ํด๊ฒฐ, OpenWrt·์๋ฒ ๋๋ ํ๊ฒฝ๊น์ง ์์ ํ ์ ๋ฆฌํด "mkdir๋ก ๋ฆฌ๋ ์ค ํ์ผ์์คํ ์ ์ดํดํ ์ ์๋ ์์ค"์ผ๋ก ์๋ดํ๋ค.
1. mkdir ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
๊ธฐ๋ณธ ๋ช ๋ น ํ์์ ๋งค์ฐ ๋จ์ํ๋ค.
mkdir [์ต์
] ๋๋ ํ ๋ฆฌ๋ช
์:
mkdir test
ํ์ฌ ๋๋ ํ ๋ฆฌ์ test๋ผ๋ ํด๋๊ฐ ์์ฑ๋๋ค.
ํ์ง๋ง ์ค๋ฌด์์๋ ์ด ๋จ์ ๋ช
๋ น๋ง์ผ๋ก๋ ํด๊ฒฐ๋์ง ์๋๋ค.
๊ทธ๋์ ์๋ ์ต์
๋ค์ด ๋งค์ฐ ์ค์ํด์ง๋ค.
2. mkdir ํต์ฌ ์ต์ ์๋ฒฝ ์ ๋ฆฌ
1) -p ์ต์ : ์์ ๋๋ ํ ๋ฆฌ๊น์ง ์๋ ์์ฑ (๊ฐ์ฅ ์ค์)
์ค๋ฌด ์ฌ์ฉ ๋น์ค 90% ์ด์์ ์ฐจ์งํ๋ ์ต์ ์ด๋ค.
mkdir -p /opt/myapp/config
์์ ๋๋ ํ ๋ฆฌ๊ฐ ์กด์ฌํ์ง ์์๋ ์์ฐจ์ ์ผ๋ก ์์ฑํ๋ค.
์ ํ์์ธ๊ฐ?
- ์๋ ์ค์น ์คํฌ๋ฆฝํธ์์ ํ์
- CI/CD ํ์ดํ๋ผ์ธ ํ๊ฒฝ์์ ์ฌํ์ฑ ํ๋ณด
- OpenWrt·์๋ฒ ๋๋ ์ฅ๋น์ ์ด๊ธฐ ์ค์ ์ ์ฌ์ฉ
- ํฌ๋ก (cron) ๊ธฐ๋ฐ ์๋ ๋ฐฑ์ ๊ฒฝ๋ก ์์ฑ ์ ์ค๋ฅ ๋ฐฉ์ง
์์ ๋๋ ํ ๋ฆฌ ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ฐ mkdir -p๋ ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.

2) -v ์ต์ : ์์ฑ ๊ณผ์ ์ถ๋ ฅ
mkdir -v logs
๊ฒฐ๊ณผ:
mkdir: created directory 'logs'
- ์ค์น ์คํฌ๋ฆฝํธ๋ ๋น๋ ์ผ๋ถ์์ ๋ก๊ทธ ์ถ๋ ฅ์ด ํ์ํ ๋ ์ ์ฉ
- ์ฅ์ /์ค๋ฅ ์ฌํ ํ ์คํธ์ ๋์
3) -m ์ต์ : ์์ฑ ์ ๊ถํ ์ง์
mkdir -m 755 /srv/www
์ค์ ํฌ์ธํธ:
- ํผ๋ฏธ์ ์ ์ฆ์ ์ค์ ํ ์ ์๋ค
- ๋จ, umask์ ์ํฅ์ ๋ฐ์ผ๋ฏ๋ก ํ ํ๊ฒฝ๊ณผ ํผ๋ฏธ์ ์ด ๋ค๋ฅด๊ฒ ๋์ฌ ์ ์์ด ์ฃผ์

4) -Z ์ต์ : SELinux ์ปจํ ์คํธ ์ ์ฉ
SELinux๊ฐ ํ์ฑํ๋ ์๋ฒ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ค.
mkdir -Z httpd_sys_rw_content_t /var/www/html/upload
์น ์๋น์ค๋ ๋ณด์ ์ ์ฑ ์ด ์๊ฒฉํ ์์คํ ์์ ์ ์ฉํ๋ค.
3. mkdir ์ฌ์ฉ ์ ๋ฐ์ํ๋ ์ค๋ฅ์ ํด๊ฒฐ์ฑ
์ค๋ฌด์์ ํํ ๋ง๋๋ ์ค๋ฅ๋ค์ ์ค์ ์์ธ๊ณผ ํจ๊ป ์ ๋ฆฌํ๋ค.
์ค๋ฅ 1: Permission denied
mkdir: cannot create directory 'data': Permission denied
์์ธ:
- ํ์ฌ ์ฌ์ฉ์์๊ฒ ์ฐ๊ธฐ ๊ถํ ์์
- ์์คํ ๊ฒฝ๋ก๋ root๋ง ์์ฑ ๊ฐ๋ฅ
ํด๊ฒฐ:
sudo mkdir data
๋๋
chmod u+w .
์ค๋ฅ 2: File exists
mkdir: cannot create directory 'logs': File exists
ํด๊ฒฐ:
mkdir -p logs
์ด๋ฏธ ์กด์ฌํ๋๋ผ๋ ์๋ฌ ์์ด ๋์ด๊ฐ๋ค.
์คํฌ๋ฆฝํธ ํ๊ฒฝ์์๋ ์ฌ์ค์ ํ์ค ์ต์
์ด๋ค.
์ค๋ฅ 3: No such file or directory
์์ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ.
mkdir: cannot create directory '/opt/a/b/c': No such file or directory
ํด๊ฒฐ:
mkdir -p /opt/a/b/c

4. ์ค๋ฌด์์ ๊ฐ์ฅ ๋ง์ด ์ฐ๋ mkdir ํจํด TOP 7
์๋ 7๊ฐ์ง๋ ์ค์ ์๋ฒ·์๋ฒ ๋๋·OpenWrt ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ๋ฃจ์๋ ์์ญ ๋ฒ ์ฐ๋ ํจํด์ด๋ค.
โ ์๋น์ค ๋ก๊ทธ ๋๋ ํ ๋ฆฌ ์์ฑ
mkdir -p /var/log/myservice
๋ก๊ทธ ๋๋ ํ ๋ฆฌ๊ฐ ์์ผ๋ฉด ๋ฐ๋ชฌ ์คํ ์์ฒด๊ฐ ์คํจํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
โก ์ค์ ํ์ผ ๋ณด๊ด ๋๋ ํ ๋ฆฌ ์ค๋น
mkdir -p /etc/myapp/conf.d
์ฌ๋ฌ ์ค์ ํ์ผ์ ๋ถ๋ฆฌํด ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ตฌ์กฐ.
โข OpenWrt overlay ํ๊ฒฝ์์ ์๊ตฌ ์ ์ฅ ๊ฒฝ๋ก ์์ฑ
OpenWrt๋ ํ์ผ ์์คํ ํน์ฑ์ด ๋ค๋ฅด๋ค.
| ๊ฒฝ๋ก | ํน์ฑ |
| /tmp | RAM ๊ธฐ๋ฐ, ์ฌ๋ถํ ์ ์ญ์ |
| /etc | overlayfs ์ ์ฅ, ์๊ตฌ์ |
| /overlay | ํ๋์ writable ์์ญ |

์ฌ๋ถํ ์ดํ์๋ ์ ์งํ๋ ค๋ฉด:
mkdir -p /etc/myapp
๋ฐ๋๋ก ํ๋ฐ์ฑ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๊ฒฝ์ฐ:
mkdir -p /tmp/myapp
โฃ ๋น๋ ์์คํ temp/scratch ๋๋ ํ ๋ฆฌ
Makefile์์ ์์ฃผ ๋ฑ์ฅํ๋ ๊ตฌ์กฐ.
mkdir -p build/tmp
โค ๋ค์ด๋ก๋/์ ๋ก๋ ๋ฐ์ดํฐ ๊ฒฝ๋ก ๋ถ๋ฆฌ
mkdir -p /opt/data/upload
mkdir -p /opt/data/download
โฅ ์ฌ์ฉ์ ํ ๋๋ ํ ๋ฆฌ ์์ฑ
mkdir -m 700 /home/newuser
root ํ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ์คํฌ๋ฆฝํธ์์๋ ๋ง์ด ์ฐ์ธ๋ค.
โฆ ์น/์๋น์ค์ฉ ์ ์ ํ์ผ ๊ฒฝ๋ก ์ค๋น
mkdir -p /srv/www/assets/css
5. Shell ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฅ ์ค๋ฌด์ ์ธ mkdir ํจํด
์๋ ์คํฌ๋ฆฝํธ๋ ๋งค์ฐ ์ค๋ฌด์ ์ด๋ฉฐ ๋๋ถ๋ถ์ ์ด๊ธฐํ ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉ๋๋ค.
#!/bin/sh
LOGDIR="/var/log/myapp"
CONFDIR="/etc/myapp"
TMPDIR="/tmp/myapp"
[ ! -d "$LOGDIR" ] && mkdir -p "$LOGDIR"
[ ! -d "$CONFDIR" ] && mkdir -p "$CONFDIR"
mkdir -p "$TMPDIR"
echo "All directories prepared."
ํฌ์ธํธ:
- -d๋ก ์กด์ฌ ์ฌ๋ถ ์ฒดํฌ
- ์กด์ฌํ์ง ์์ ๋๋ง ์์ฑ
- ๋ก๊ทธ·์ค์ ·์บ์ ๊ฒฝ๋ก ๊ตฌ๋ถ
6. C ์ธ์ด์์ mkdir ์ฌ์ฉํ๊ธฐ(์๋ฒ ๋๋ ๊ฐ๋ฐ ํ์)
์๋ฒ ๋๋ ๊ฐ๋ฐ์์๊ฒ๋ C ์ฝ๋๊ฐ ๋ ์ต์ํ ์ ์๋ค.
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
int main(void)
{
const char *path = "/tmp/testdir";
if (mkdir(path, 0755) == -1)
{
perror("mkdir error");
return -1;
}
printf("Directory created: %s\n", path);
return 0;
}
ํต์ฌ ํฌ์ธํธ:
- ์กด์ฌํ๋ฉด -1 ๋ฆฌํด
- errno๋ก ์ ํํ ๋ฌธ์ ํ์ ๊ฐ๋ฅ
- ์๋ฒ ๋๋์์๋ ํ๋์/overlay ์ฌ๋ถ๊น์ง ๊ณ ๋ คํด์ผ ํจ
7. mkdir์ ์์คํ ์ฝ ๊ด์ ์ดํดํ๊ธฐ
mkdir ๋์์ ๋จ์ํ “ํด๋ ์์ฑ”์ด ์๋๋ผ ํ์ผ ์์คํ ์ ๋ค์์ ์์ฒญํ๋ ๊ณผ์ ์ด๋ค.
- inode ์์ฑ
- directory entry ์ถ๊ฐ
- parent ๋๋ ํ ๋ฆฌ์ metadata ๊ฐฑ์
- ํผ๋ฏธ์ ์ ์ฉ
- ์์ ๋๋ ํ ๋ฆฌ๊ฐ ์์ผ๋ฉด ์๋ฌ ์ฒ๋ฆฌ
- SELinux ๋ฑ ๋ณด์ ์ธ์ฆ ์ ์ฑ ํ์ธ
์ฆ, mkdir๋ ํ์ผ ์์คํ ์ ๋ณธ์ง์ ์ธ ๋์์ ๊ฑด๋๋ฆฌ๋ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ธ ์์คํ ์ฝ ๊ธฐ๋ฐ ๊ธฐ๋ฅ์ด๋ค.
8. ์์ฃผ ๋ฌป๋ ์ง๋ฌธ(FAQ)
Q1. mkdir -p๋ ํญ์ ์จ๋ ๋๋์?
๋ค. ์คํฌ๋ฆฝํธ๋ ์๋ํ ํ๊ฒฝ์์๋ mkdir -p ์ฌ์ฉ์ด ์ฌ์ค์ ํ์ค์
๋๋ค.
์ด๋ฏธ ๋๋ ํ ๋ฆฌ๊ฐ ์กด์ฌํด๋ ์๋ฌ๊ฐ ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ์คํ·๋ฐฐํฌ·๋ถํ
์คํฌ๋ฆฝํธ์์ ํนํ ์์ ์ ์
๋๋ค.
Q2. ์ด๋ฏธ ์กด์ฌํ๋ ๋๋ ํ ๋ฆฌ์ mkdir๋ฅผ ์คํํ๋ฉด ์ด๋ป๊ฒ ๋๋์?
๊ธฐ๋ณธ mkdir๋ ์๋ฌ๋ฅผ ์ถ๋ ฅํ์ง๋ง(File exists),
mkdir -p dirname
์ด ๋๋ฌธ์ ๋๋ถ๋ถ์ ์ค๋ฌด ์คํฌ๋ฆฝํธ๊ฐ -p ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
Q3. ์ฌ๋ฌ ๊ฐ์ ๋๋ ํ ๋ฆฌ๋ฅผ ํ ๋ฒ์ ๋ง๋ค ์ ์๋์?
๋ค. ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋์์ ์์ฑํ ์ ์์ต๋๋ค.
mkdir "my folder"mkdir dir1 dir2 dir3
Q4. ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ ๊ณต๋ฐฑ์ด ์์ผ๋ฉด ์ด๋ป๊ฒ ์ ๋ ฅํ๋์?
๋ฐ์ดํ๋ก ๊ฐ์ธ์ผ ํฉ๋๋ค.
mkdir "my folder"
์์์ ๊ณต๋ฐฑ์ ๊ตฌ๋ถ์๋ก ์ธ์๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ๋ฐ์ดํ๊ฐ ํ์ํฉ๋๋ค.
Q5. ํผ๋ฏธ์ ์ mkdir์์ ๋ฐ๋ก ์ง์ ํ ์ ์๋์?
๊ฐ๋ฅํฉ๋๋ค.
mkdir -m 755 dirname
๋จ, umask ์ํฅ์ ๋ฐ์ผ๋ฏ๋ก ํ๊ฒฝ์ ๋ฐ๋ผ ์ค์ ์์ฑ ํผ๋ฏธ์
์ด ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
์ ํํ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ฉด chmod๋ก ํ์ฒ๋ฆฌํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค.
9. mkdir๋ ๋จ์ ์์ฑ ๋ช ๋ น์ด ์๋๋ผ ์์คํ ๊ตฌ์กฐ์ ๊ธฐ์ด
mkdir๋ ๋ฆฌ๋
์ค์ ๊ธฐ๋ฐ์ด ๋๋ ํ์ผ ์์คํ
์ ๋ค๋ฃจ๋ ๊ฐ์ฅ ์ค์ํ ๋ช
๋ น์ด ์ค ํ๋๋ค.
ํนํ OpenWrt·์๋ฒ ๋๋·์ด์ ์คํฌ๋ฆฝํธ ํ๊ฒฝ์์๋ ์ ํํ mkdir ์ฌ์ฉ ์ฌ๋ถ๊ฐ ์์คํ
์์ ์ฑ์ ์ข์ฐํ๋ค.
“๋๋ ํ ๋ฆฌ๋ฅผ ์ ๋ง๋๋ ๊ฒ์ ์์คํ ์ ์์ ์ ์ผ๋ก ๋ง๋ ๋ค.”
— ๋ฆฌ๋ ์ค ์ด์์ ๊ธฐ๋ณธ ์ฒ ํ ์ค ํ๋