02A. ๊ด๋ฆฌ๋ช ๋ น์ด
02A. ๊ด๋ฆฌ๋ช ๋ น์ด ๊ด๋ จ
ํ๋ก์ธ์ค, ๋ฉ๋ชจ๋ฆฌ, ํ์ผ์์คํ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ช ๋ น์ด ์ ๋๋ค. ์์คํ ์ด์์ ์ํด ํ์ํ ๋ช ๋ น์ด ์ ๋๋ค.
1.์์คํ ๊ด๋ฆฌ
ํ๋ก์ธ์ค, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ช ๋ น์ด ์ ๋๋ค.
crontab
์ ๊ธฐ์ ์ผ๋ก ์ง์ ํ ์๊ฐ์ ์คํํ๊ณ ์ถ์ ๋ช ๋ น์ด๋ฅผ ๋ฑ๋กํฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ๋ฑ๋กํด๋ ๋ฉ๋๋ค.
๋ฑ๋กํ ๊ณ์ ์ ์ฌ์ฉ์๋ก ์คํ๋ฉ๋๋ค. ๋ค๋ฅธ ์ฌ์ฉ์์ ํฌ๋ก ํญ์ ๋ฑ๋กํ๋ ค๋ฉด -u
์ต์
์ ์ด์ฉํฉ๋๋ค.
์ฃผ์ ์ต์
์ต์ | ์ค๋ช |
---|---|
-l | ๋ฑ๋ก๋ ๋ช ๋ น์ด ๋ฆฌ์คํธ ํ์ธ |
-e | ๋ฑ๋ก๋ ๋ช ๋ น์ด๋ฅผ ์์ |
-r | ๋ฑ๋ก๋ ํฌ๋ก ํญ์ ์ญ์ |
-u | ํฌ๋ก ํญ์ ๋ฑ๋กํ ์ฌ์ฉ์ ์ง์ |
์ฌ์ฉ ์์
-e
์ต์
์ผ๋ก ์คํํ๋ฉด ํฌ๋ก ํญ์ ๋ฑ๋กํ๊ธฐ ์ํ ํ์ผ์ด ์ด๋ฆฝ๋๋ค. vi
์๋ํฐ์ ๋์ผํ ๋ช
๋ น์ผ๋ก ํ์ํ ๋ช
๋ น์ด๋ฅผ ๋ฑ๋กํ ์ ์์ต๋๋ค.
# ํฌ๋ก ํญ์ ๋ฑ๋ก
crontab -e
# ๋ฑ๋ก๋ ํฌ๋ก ํญ์ ํ์ธ
crontab -l
ํฌ๋ก ํญ์ ๋ฑ๋กํ ๋๋ ์คํํ๊ณ ์ ํ๋ ์ฃผ๊ธฐ์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํฉ๋๋ค. ์ฃผ๊ธฐ๋ ๋ถ, ์, ์ผ, ์, ์์ผ์ ํํ๋ก ์
๋ ฅํฉ๋๋ค. *
๋ ๋ชจ๋๋ฅผ ์๋ฏธํฉ๋๋ค. ๋งค๋ถ, ๋งค์, ๋งค์ผ, ๋งค์, ๋ชจ๋ ์์ผ์ ์คํํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ฃผ๊ธฐ | ๋น๊ณ |
---|---|
๋ถ | 0 ~ 59 |
์ | 0 ~ 23 |
์ผ | 1 ~ 31 |
์ | 1 ~ 12 |
์์ผ | 0 ~ 7(0, 7์ด ์ผ์์ผ) |
# ์
๋ ฅ ํํ
๋ถ ์ ์ผ ์ ์์ผ ๋ช
๋ น์ด
# ๋งค 50๋ถ์ time.sh ์คํ
50 * * * * /mnt/usr/time.sh
# ๋งค์ผ 1์์ log ๋ก ๋๋๋ ํ์ผ์ ์ฐพ์์ find.log ํ์ผ๋ก ์ ์ฅ
0 1 * * * find -name '*.log' ./ >> /test/log/fin.log
# 5๋ถ ๋ง๋ค program.sh ์คํ
*/5 * * * * /home/user/program.sh
# 4-10 ์ ์ฌ์ด์ 1์๊ฐ๋ง๋ค program.sh ์คํ
0 4-10/1 * * * /home/user/program.sh
# ๋งค์ผ 1์, 3์์ program.sh ๋ฅผ ์คํํ๊ณ ๋ก๊ทธ๋ฅผ ์ ์ฅ
# ํฌ๋ก ํญ์ ์
๋ ฅํ ๋ %๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ญ์ฌ๋์ฌ(\)๋ก ๊ฐ์ธ ์ฃผ์ด์ผ ํจ
0 1,3 * * /home/user/program.sh >> /home/user/logs/`date -u +\%Y\%m\%d.\%H\%M.log` 2>&1
ํฌ๋ก ํญ์ ์ผ๊ด๋ก ๋ฑ๋กํ๊ณ ์ถ์ ๋ echo
๋ช
๋ น์ ์ด์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. /var/spool/cron/<์ ์ ๋ช
>
์ ์ ์ ๋ณ ํฌ๋ก ํญ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฃ์ด์ฃผ๋ฉด crontab -e
์ ๋์ผํ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
sudo bash -c 'echo \'
#
# # hadoop log cleansing
# 0 1 * * * find /var/log/hadoop -not -name \"*.gz\" -type f -mtime +2 -exec gzip {} \;
# 0 1 * * * find /var/log/hadoop -name \"*.gz\" -mtime +14 -delete \" >> /var/spool/cron/user_name'
ํฌ๋ก ํญ ์์น
ํฌ๋ก ํญ ํ์ผ์ OS์ ๋ฐ๋ผ ์์น๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค.
- .CentOS:
/var/spool/cron/์ ์ ๋ช
- .Ubuntu:
/var/spool/cron/crontab/์ ์ ๋ช
exec
์ฃผ์ด์ง ๋ช
๋ น์ด๋ฅผ ์คํํ๋๋ฐ ์๋ก์ด ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ง ์๊ณ , ์ ํ๋ก์ธ์ค๋ฅผ ๋์ฒดํฉ๋๋ค. ์๋ฅผ ๋ค์ด bash
์์์ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ์๋ฐ ํ๋ก๊ทธ๋จ์ ppid๊ฐ bash
์์ด ๋๊ณ , ์๋ฐ ํ๋ก๊ทธ๋จ์ด bash
์์ ํ์ ํ๋ก์ธ์ค๋ก ์คํ๋ฉ๋๋ค. exec
์ปค๋งจ๋๋ก ์คํํ๋ฉด bash
์์ ํ๋ก์ธ์ค๊ฐ ์๋ฐ ํ๋ก๊ทธ๋จ์ด ๋ฉ๋๋ค. ppid๊ฐ ๋ฐ๋ก ์
์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฐํ๋ก๊ทธ๋จ์ด ์ข
๋ฃ๋๋ฉด ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋ฉ๋๋ค. bash
์๋ก ๋์์ค์ง ์์ต๋๋ค.
๋ค์์ ์ํฉ์ ์ดํด๋ณด๋ฉด macbook์์ masternode๋ก ์ ๊ทผํ์ฌ echo ๋ฅผ ์คํํ๋ฉด masternode์ bash
์์
๋๋ค. exec๋ก ๋ช
๋ น์ ์คํํ๋ฉด bash
์์ด echo ๋ช
๋ น์ผ๋ก ๋์ฒด๋๊ณ , ์ข
๋ฃ๋๋ฉด bash
์์ด ์๊ธฐ ๋๋ฌธ์ ๋ค์ macbook์ผ๋ก ๋์์ต๋๋ค.
โ macbook โ ssh root@masternode
echo "aa"
#
# aa
exec echo "aa"
#
# aa
# โ macbook โ
์ฃผ์ ์ต์
์ต์ | ์ค๋ช |
---|---|
-c | ํ๊ฒฝ ๋ณ์๊ฐ ์๋ ์ํ๋ก ์คํ |
-a <NAME> | 0๋ฒ์งธ ์ธ์๋ก ์ด๋ฆ์ ์ ๋ฌ |
-l | 0๋ฒ์งธ ์ธ์๋ก ๋์ฌ๋ฅผ ์ ๋ฌ |
์ฌ์ฉ์์
exec echo "aa"
# aa
#
exec java -cp '/etc/hadoop/conf' org.apache.hadoop.hdfs.server.datanode.SecureDataNodeStarter
findmnt
findmnt
๋ ๋ง์ดํธ๋ ํ์ผ ์์คํ
๋ชฉ๋ก์ ํ์ธํฉ๋๋ค.
์ฃผ์ ์ต์
์ต์ | ์ค๋ช |
---|---|
-l | ์ ๋ณด๋ฅผ ๋ชฉ๋ก ํ์์ผ๋ก ์ถ๋ ฅ |
-t | ํ์ผ ์์คํ ์ ํ์ ์ธก์ |
์ฌ์ฉ ์์
findmnt
#
# **TARGET SOURCE FSTYPE OPTIONS**
# / /dev/sda3 ext4 rw,relatime,errors=remo
# โโ/sys sysfs sysfs rw,nosuid,nodev,noexec,
# โ โโ/sys/kernel/security securityfs securit rw,nosuid,nodev,noexec,
# โ โโ/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,
findmnt -l
#
# **TARGET SOURCE FSTYPE OPTIONS**
# /sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
# /proc proc proc rw,nosuid,nodev,noexec,relatime
# /dev udev devtmpfs rw,nosuid,relatime,size=3996916k,nr_inodes=999229,mode=755
findmnt -t ext4
#
# **TARGET SOURCE FSTYPE OPTIONS**
# / /dev/sda3 **ext4** rw,relatime,errors=remount-ro,data=ordered
# โโ/media/tecmint/Data_Storage /dev/sda5 **ext4** rw,nosuid,nodev,relatime,data=ordered
free
history
htop
jobs
journalctl
kill
logrotate
man
mount
nohup
ntp
openssl
pgrep
ps
sar
2. ์ฌ์ฉ์๊ด๋ฆฌ
์ฌ์ฉ์, ๊ทธ๋ฃน ๊ด๋ฆฌ๋ฅผ ์ํ ๋ช ๋ น์ด ์ ๋๋ค.
groupadd
๊ทธ๋ฃน์ ์ถ๊ฐ ํ๋ ๋ช
๋ น์ด์
๋๋ค. ๊ทธ๋ฃน ์ ๋ณด๋ /etc/group
์์ ํ์ธํ ์ ์์ต๋๋ค.
์ฃผ์ ์ต์
์ต์ | ์ค๋ช |
---|---|
-g | gid ํ ๋น |
/etc/group
์์คํ ์ ๊ทธ๋ฃน์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
# ๊ทธ๋ฃน๋ช
:๋น๋ฐ๋ฒํธ:๊ทธ๋ฃนID:๊ทธ๋ฃน์ฌ์ฉ์
cat /etc/group
#
# root:x:0:
# daemon:x:1:
# groupa:x:10001:usera,userb
์ฌ์ฉ์์
# ๊ทธ๋ฃน groupa ์ถ๊ฐ
groupadd groupa
groups
๋ช
๋ น์ผ๋ก ํ์ฌ ์ฌ์ฉ์, ํน์ ์ฌ์ฉ์์์ ๊ทธ๋ฃน์ ํ์ธํ ์ ์์ต๋๋ค.
# ํ์ฌ ์ฌ์ฉ์์ ๊ทธ๋ฃน ํ์ธ
groups
#
# groupa
# ํน์ ์ฌ์ฉ์์ ๊ทธ๋ฃน ํ์ธ
groups usera
#
# usera : groupa, groupb
useradd
์ฌ์ฉ์ ์ถ๊ฐ๋ฅผ ํ๋ ๋ช
๋ น์ด์
๋๋ค. ์ฌ์ฉ์ ์ ๋ณด๋ /etc/passwd
์์ ํ์ธํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๋ ํน์ ๊ทธ๋ฃน์ ๋ฐ๋์ ์ํด์ผ ํจ
์ฃผ์ ์ต์
์ต์ | ์ค๋ช |
---|---|
-g | ์ฌ์ฉ์ ๊ทธ๋ฃน์ ์ถ๊ฐ |
-d | ์ฌ์ฉ์ ๋๋ ํ ๋ฆฌ ์ง์ |
-s | ์ ์ง์ |
-p | ํจ์ค์๋ ์ง์ |
-m | ์ฌ์ฉ์์ ํ๋๋ ํ ๋ฆฌ ์์ฑ |
/etc/passwd
/sbin/nologin
์ผ๋ก ๊ธฐ๋ณธ์์ด ์ค์ ๋ ๊ณ์ ์ ๋ก๊ทธ์ธ์ ์๋์ง๋ง,su
๋ช ๋ น์ผ๋ก ๊ณ์ ์ ๋ณ๊ฒฝํ์ฌ ๋ช ๋ น์ ์คํํ ์ ์์
# ์ฌ์ฉ์์ด๋ฆ:๋น๋ฐ๋ฒํธ:์ฌ์ฉ์ID:๊ทธ๋ฃนID:์ฌ์ฉ์์ค๋ช
:ํ๋๋ ํ ๋ฆฌ:๊ธฐ๋ณธ์
cat /etc/passwd
#
# root:x:0:0:root:/root:/bin/bash
# bin:x:1:1:bin:/bin:/sbin/nologin
์ฌ์ฉ์์
# ์ฌ์ฉ์ aa๋ฅผ ์ถ๊ฐํ๋ฉด์ ๊ทธ๋ฃน์ gg๋ก ์ค์
useradd aa -g gg
# deploy ๊ณ์ ์ ์์ฑํ๋ฉด, /home/deploy ๋๋ ํ ๋ฆฌ๋ ํจ๊ป ์์ฑ
useradd -m deploy
# user1์ grp1๊ทธ๋ฃน์ ์ถ๊ฐ
usermod -G grp1 -a user1
# user1์ grp1, grp2์ ๋ฑ๋ก
usermod -a -G grp1,grp2 user1
3. ํ์ผ ์์คํ
ํ์ผ ์์คํ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ช ๋ น์ด์ ๋๋ค.
4. ์์ถ
ํ์ผ์ ์์ถ์ ์ํ ๋ช ๋ น์ด์ ๋๋ค.
gzip
, gunzip
, zcat
gizp
์ ํ์ผ์ ์์ถํ ๋, gunzip์ ํ์ผ์ ์์ถ์ ํด์ ํ ๋ ์ฌ์ฉํฉ๋๋ค. ์์ถํ ํ์ผ์ .gz
์ด ๋ถ๊ณ ๊ธฐ์กด ํ์ผ์ ์ญ์ ๋ฉ๋๋ค. ํ์ผ, ๋๋ ํ ๋ฆฌ ๋จ์๋ก ์์ถ๋๋ฏ๋ก ์ฌ๋ฌ๊ฐ์ ํ์ผ์ ์์ถํ๊ธฐ ์ํด์๋ tar ๋ช
๋ น์ ์ด์ฉํด์ผ ํฉ๋๋ค.
์ฃผ์ ์ต์
์ต์ | ์ค๋ช |
---|---|
-r | ๋๋ ํ ๋ฆฌ๋ฅผ ์์ถ |
-d | ์์ถ์ ํด์ . gunzip ๊ณผ ๊ฐ์ ๋์ |
-l | ์์ถ ์ ๋ณด๋ฅผ ํ์ |
-c | gzip ํ์ผ์ ์ฝ์ด์ ํ์ค ์ถ๋ ฅ์ผ๋ก ์ถ๋ ฅ. zcat ๊ณผ ๋์ผํ๊ฒ ๋์ |
์ฌ์ฉ์์
# sample.txt ํ์ผ์ ์์ถํ๋ฉด sample.txt.gz ํ์ผ์ด ์์ฑ
ls
#
# sample.txt
gzip sample.txt
ls
#
#sample.txt.gz
gzip -l sample.txt.gz
#
# compressed uncompressed ratio uncompressed_name
# 278 412 38.1% work
# sample.txt.gz ํ์ผ์ ์์ถ์ ํด์ฌํ๋ฉด sample.txt ํ์ผ ์์ฑ
ls
#
# sample.txt.gz
# ๋ค์์ ๋๊ฐ์ ๋ช
๋ น์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋
๋๋ค.
gunzip sample.txt.gz
gzip -d sample.txt.gz
ls
#
# sample.txt
์์ถํ์ผ์ ์ฝ์ด์ ํ์ค ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๋ค์ฌ์ ์์ถ์ ํด์ ํ ์๋ ์์ต๋๋ค.
cat sample.txt.gz | gzip -d
์์ถํ์ผ์ ์ฝ์ด์ ํ์ค ์ถ๋ ฅ์ผ๋ก ์ถ๋ ฅํฉ๋๋ค. gzip -c
, zcat
์ ๋์ผํ๊ฒ ๋์ํฉ๋๋ค.
gunzip -c sample.txt.gz
#
# a, b, c
zcat sample.txt.gz
#
# a, b, c
tar
์ฌ๋ฌ๊ฐ์ ํ์ผ์ ๋ชจ์์ ํ๋์ ํ์ผ(tar
ํ์)๋ก ๋ง๋ค์ด ์ค๋๋ค.
์ฃผ์ ์ต์
์ต์ | ์ค๋ช |
---|---|
-c | ํ์ผ ๋ฌถ์์ ์์ฑ |
-x | ํ์ผ ๋ฌถ์์ ํด์ |
-z | ํ์ผ์ gzip ์์ถํ๋ฉด์ ๋ฌถ์์ ์์ฑ |
-v | ์ฒ๋ฆฌ ์ํฉ์ ์ถ๋ ฅ |
-t | ํ์ผ ๋ฌถ์์ ๋ค์ด์๋ ํ์ผ ๋ชฉ๋ก์ ์ถ๋ ฅ |
-P | ์ ๋ ๊ฒฝ๋ก ์ฒ๋ฆฌ |
--exclude | ํ์ผ ์ ์ธ. exclude ๋ tar ๋ฒ์ ์ ๋ฐ๋ผ ์ปค๋งจ๋์ ์ ์ผ ์์ ์ฌ์ฉ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ๋ ์์. |
--delete | ํ์ผ ์ญ์ |
์ฌ์ฉ์์
# foo, bar๋ฅผ archive.tar๋ก ๋ง๋ฌ
tar -cf archive.tar foo bar
# archive.tar ํ์ผ ์์ ๋ฌถ์ฌ ์๋ ๋ด์ฉ์ ํ์ธ
tar -tf archive.tar
# foo, bar๋ฅผ gzip ์์ถํ์ฌ archive.tar.gz ์ผ๋ก ๋ง๋ฌ
tar -zcvf archive.tar.gz foo bar
# source_dir์ .log, .attatch ๋ก ๋๋๋ ํ์ผ, folder_name ๋๋ ํ ๋ฆฌ ์ ์ธํ๊ณ file.tar.gz ์ผ๋ก ์์ถ
tar -zcvf file.tar.gz source_dir --exclude="*.log" --exclude="*.attach*" --exclude="./folder_name"
# source_dir์ logs ํด๋๋ ์ ์ธํ๊ณ ์์ถ. exclude ์ต์
์ ์ ์ผ ์์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์
tar --exclude="source_dir/logs" -zcvf file.tar.gz source_dir
# archive.tar ํ์ผ ๋ฌถ์ ํด์
tar -xf archive.tar
# archive.tar.gz ์์ถ ํ์ผ์ ๋ฌถ์ ํด์
tar -zxvf archive.tar.gz
์์ถ ํ์ผ์์ ํ์ผ์ ์ญ์ ํฉ๋๋ค. --file
์ต์
๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.
tar -tf txt.tar
#
# a.txt
# b.txt
tar --delete --file=txt.tar a.txt
tar -tf txt.tar
#
# b.txt
๊ฒฝ๊ณ : tar: Removing leading `/' from member names
tar
๋ก ์์ถ์ ์งํํ ๋ ์ ๋ ๊ฒฝ๋ก๋ก ์ค์ ๋์ด ์์ผ๋ฉด ๋ฐ์ํ๋ ๊ฒฝ๊ณ ์
๋๋ค. ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ ๊ฑฐํ๊ณ ์์ถ์ ์งํํฉ๋๋ค. ๊ฒฝ๊ณ ์ด๊ธฐ ๋๋ฌธ์ ์ฐธ๊ณ ๋ง ํ๋ฉด ๋ฉ๋๋ค.# ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์ค์ ์์ถ์ etc/sample/conf ๋ก ์งํ
tar -zcf sample.tgz /etc/sample/conf
# ํ์ผ ์์ถ ์ํ ํ์ธ
tar -tf sample.tgz
#
# etc/sample/conf/file_a
# etc/sample/conf/file_b
tar -zcfP sample2.tgz /etc/sample/conf
# ํ์ผ ์์ถ ์ํ ํ์ธ
# / ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ถ์ด ์งํ ๋จ
tar -tf sample2.tgz
#
# /etc/sample/conf/file_a
# /etc/sample/conf/file_b
GNU-tar / BSD-tar
tar
์คํ ํ์ผ์ GNU ๋ฒ์ ๊ณผ BSD ๋ฒ์ ์ด ์์ต๋๋ค. ๋งฅ๋ถ Ventura ๋ฒ์ ์์๋ BSD tar ์ด ์ค์น ๋์๊ณ , ์ฐ๋ถํฌ 20์๋ GNU tar ์ด ์ค์น ๋์์ต๋๋ค. ์ด๋ก ์ธํด ๋งฅ๋ถ์์ ์์ถํ tar
ํ์ผ์ ์ฐ๋ถํฌ์์ ์์ถ ํด์ ํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ต๋๋ค.์ด๋๋ ๋งฅ๋ถ์ GNU ๋ฒ์ tar
์ ์ค์นํ์ฌ ์ค๋ฅ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
# ๋งฅ๋ถ ๊ธฐ๋ณธ tar
tar --version
#
# bsdtar 3.5.3 - libarchive 3.5.3 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.8
# gnu tar ์ค์น ํ ํ์ธ
brew install gnu-tar
gtar --version
#
# tar (GNU tar) 1.34
# Copyright (C) 2021 Free Software Foundation, Inc.
# License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
# This is free software: you are free to change and redistribute it.
# There is NO WARRANTY, to the extent permitted by law.
#
# Written by John Gilmore and Jay Fenlason.
zip
, unzip
zip
, unzip
ํ์์ ํ์ผ ์์ถ์ ์ง์ํฉ๋๋ค.
์ฃผ์ ์ต์
์ต์ | ์ค๋ช |
---|---|
-r | ํด๋ ์์ถ |
-q | quite ์ต์ |
-d | ์ญ์ |
-x | ์ ์ธ |
-o | ๋ฎ์ด์ฐ๊ธฐ |
์์
# ํ์ผ ์์ถ
zip sample.zip sample.txt abc.txt
# ํด๋ ์์ถ
zip -r folder.zip abc/
zip
์์ถ ํ์ผ์์ ํน์ ํ์ผ์ ์ญ์ ํ ์ ์์ต๋๋ค.zip -q -d log4j-core-2.6.2.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
ํน์ ํ์ผ, ํด๋๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
# ํด๋ ์ ์ธ์์ *๋ฅผ \์ ํจ๊ป ์ฌ์ฉ
zip -r sample.zip dir1 -x \*__pycache__\* -x dir1/tmp/\*
# ์์ถ์ ํด์ ํ๋ฉด์ ๋์ผํ ํ์ผ์ ๋ฎ์ด์ด๋ค.
unzip -o sample.zip