IT 이야기/Linux 셸 스크립트137 [Linux 셸 스크립트] 파일처리 - 034 파일들을 다른 디렉터리에 동기화해서 백업처리하기 1. 사용 명령어 (1) rsync 2. 키워드 & 사용처 (1) 키워드 백업, 동기, 차분, 원격 백업 (2) 사용처 매일 새로운 로그 파일이 생성되는 등 파일이 늘어나는 디렉터리를 효과적으로 백업하고 싶을 때 사용합니다. 3. 실행 예제 $ ls /home/park/myapp/log 로그 파일 확인 20210316.log20210317.log20210318.log $ ./rsync.sh sending incremental file list log/ log/20210318.log sent 100bytes received 20 bytes 678.00 bytes/sec total size is 345 speedup is 1.41 4. 스크립트 #!/bin/sh log_dir="/home/park/myapp.. 2021. 3. 18. [Linux 셸 스크립트] 파일처리 - 033 파일을 백업할 때 파일명에 날짜 넣기 1. 사용 명령어 (1) date (2) cp 2. 키워드 & 사용처 (1) 키워드 백업, 현재 시각, 날짜 (2) 사용처 어떤 파일을 백업할 때 현재 날짜를 넣어서 간단히 복사해두고 싶을 때 사용합니다. 3. 실행 예제 $ ls파일 확인 datename.shmyapp.conf $ ./datename.sh스크립트 실행 myapp.conf -> myapp.conf.20210318 $ ./datename.sh스크립트 실행 myapp.conf -> myapp.conf.202103182210.20 $ ls파일 확인 datename.shmyaapp.confmyapp.conf.20210318myapp.conf.202103182210.20 4. 스크립트 #!/bin/sh config="myapp.conf" bak_f.. 2021. 3. 18. [Linux 셸 스크립트] 파일처리 - 032 로그 파일이 엄청 많은 디렉터리에서 파일들에 명령어를 일괄 실행하기 1. 사용 명령어 (1) find (2) xargs (3) grep 2. 키워드 & 사용처 (1) 키워드 인수, 명령행 인수, 대량 파일 (2) 사용처 파일이 너무 많아 단순히 *로 파일을 지정하면 에러가 발생하는 상황에서 grep 명령어 등을 실행하고 싶을 때 사용합니다. 3. 실행 예제 $ ./xargs-grep.sh /var/log/myapp/a.log:2021-03-14 12:13:15 [ERROR] File Not Found. /var/log/myapp/b.log:2021-03-15 01:11:34 [ERROR] I/O Error. /var/log/myapp/c.log:2021-03-16 21:31:45 [ERROR] File Not Found. 4. 스크립트 #!/bin/sh logdir="/.. 2021. 3. 18. [Linux 셸 스크립트] 파일처리 - 031 작업 파일 디렉터리에서 1년 이상 갱신되지 않은 파일 삭제하기 1. 사용 명령어 (1) find (2) xargs 2. 키워드 & 사용처 (1) 키워드 갱신일, 날짜, 파일 삭제, 자동 삭제 (2) 사용처 오랫동안 변경되지 않은 파일이나 오래된 로그 파일을 삭제하고 싶을 때 사용합니다. 3. 실행 예제 $ ./find-del.sh 현재 날짜가 2021년 03월 18일이라면 /var/log/myapp/202003171112.log /var/log/myapp/202003161229.log /var/log/myapp/202003151931.log 4. 스크립트 #!/bin/sh logdir="/var/log/myapp" # 최종 갱신일이 1년 이상된 오래된 파일 삭제 find $logidr -name "*.log" -mtime +364 -print | xargs rm -.. 2021. 3. 18. [Linux 셸 스크립트] 파일처리 - 030 특정 디렉터리에서 n일 전부터 m일 전까지 변경된 파일 목록 얻기 1. 사용 명령어 (1) find 2. 키워드 & 사용처 (1) 키워드 어제, 그저께, 날짜, 타임스탬프, mtime (2) 사용처 특정 기간에 작성, 변경되니 파일 목록을 만들고 싶을 때 사용합니다. 3. 실행 예제 # 현재 시각이 2021년 3월 17일 20:00으로 가정 $ ./find-mtime.sh /var/log/myapp/202103132346.log /var/log/myapp/202103140543.log /var/log/myapp/202103141021.log /var/log/myapp/202103150111.log /var/log/myapp/202103150252.log 4. 스크립트 #!/bin/sh logdir="/var/log/myapp" # 4일 전부터 2일 전까지 갱신된 파일 .. 2021. 3. 18. [Linux 셸 스크립트] 파일처리 - 029 여러 HTML 파일에서 title 태그만 추출해서 각각 다른 파일로 출력하기 1. 사용 명령어 (1) basename (2) sed 2. 키워드 & 사용처 (1) 키워드 for문, 파일 목록, HTML 태그, 다른 파일 (2) 사용처 여러 HTML 파일에서 특정 요소만 추출해서 HTML 파일마다 다른 파일로 출력하고 싶을 때 사용합니다. 3. 실행 예제 $ ls output/ $ ./htmltitle.sh $ ls output/ about.txt index.txt menu.txt 4. 스크립트 #!/bin/sh # 현재 디렉터리에 있는 .html 파일이 대상 for htmlfile in *.html ① do # 파일명에서 확장자를 뺀 문자열 취득 fname=$(basename $htmlfile .html) ② # 태그 내용을 후방참조\1로 추출, 파일 출력 sed -n "s/^... 2021. 3. 18. [Linux 셸 스크립트] 파일처리 - 028 신규 파일을 만들지 않고 이미 있는 파일만 파일 갱신일을 바꾸기 1. 사용 명령어 (1) touch 2. 키워드 & 사용처 (1) 키워드 타임 스탬프, 신규 파일, 갱신일 (2) 사용처 touch 명령어로 타임스탬프를 갱신하는 초기화 스크립트 등에서 존재하지 않는 파일은 새롭게 만들고 싶지 않을 때 사용합니다. 3. 실행 예제 $ ./touch.sh 4. 스크립트 #!/bin/sh # [YYYYMMDDhhmm.SS]로 [년월일시분.초] 지정 timestamp="202103171723.30" # 파일 타임스탬프 갱신 # -c 옵션이 있으므로 lock 파일은 신규 파일을 만들지 않음 touch -t $timestamp app1.log ① touch -c $timestamp lock.tmp ② 5. 해설 이 스크립트는 app1.log와 lock.tmp라는 두 파일의 타임스.. 2021. 3. 17. [Linux 셸 스크립트] 파일처리 - 027 파일 내용을 삭제해서 빈 파일로 만들기 1. 사용 명령어 (1) :(널 명령어) (2) uptime (3) sleep 2. 키워드 & 사용처 (1) 키워드 빈 파일, 초기화 (2) 사용처 스크립트 시작할 때 기록 파일, 임시 파일을 초기화하고 싶을 때 사용합니다. 3. 실행 예제 $ ./null.sh 4. 스크립트 #!/bin/sh # uptime 명령어 기록 파일 정의 uptimelog="uptime.log" # 널 명령어로 빈 파일로 초기화 : > $uptimelog ① # 10초마다 6번, uptime 명령어 실행 for i in 1 2 3 4 5 6 ② do uptime >> $uptimelog ③ sleep 10 done 5. 해설 이 스크립트는 현재 서버 부하 상태를 확인합니다. 로드 평균치(서버 부하)를 출력하는 uptime 명령.. 2021. 3. 17. [Linux 셸 스크립트] 파일처리 - 026 디렉터리에 있는 파일과 디렉터리 수 조사하기 1. 사용 명령어 (1) find (2) wc 2. 키워드 & 사용처 (1) 키워드 파일 수, 디렉터리 수, 카운트 (2) 사용처 작업 디렉터리 등 여러 파일이 있는 디렉터리에서 파일 수, 디렉터리 수를 세고 싶을 때 사용합니다. 3. 실행 예제 $ ./findcount.sh 대상 디렉터리: /home/park/myapp/work 파일 수: 4 디렉터리 수: 2 4. 스크립트 #!/bin/sh targetdir="home/park/myapp/work" filecount=$(find "$targetdir" -maxdepth 1 -type f -print | wc -l) ① dircount=$(find "$targetdir" -maxdepth 1 -type d -print | wc -l ① dircount=.. 2021. 3. 17. [Linux 셸 스크립트] 파일처리 - 025 디렉터리 이동한 다음 간단히 원래 장소로 돌아가기 1. 사용 명령어 (1) cd (2) echo (3) tar 2. 키워드 & 사용처 (1) 키워드 서브셸, 현재 디렉터리, 자식 프로세스 (2) 사용처 스크립트 안에서 cd 명령어로 다른 디렉터리로 이동하고 나서 원래 디렉터리로 간단히 돌아가고 싶을 때 사용합니다. 3. 실행 예제 $ ./subcd.sh Archive: /var/tmp/archive.tar count.txt data1.txt data2.txt Start: command.sh 4. 스크립트 #!/bin/sh # 괄호 안은 서브셸이 되므로 디렉터리 이동은 이 안에서만 유효 ( echo "Archive: /var/tmp/archive.tar" ① cd /var/tmp ① tar cvf archive.tar *.txt ① ) # 스크립트 실행은.. 2021. 3. 16. 이전 1 ··· 8 9 10 11 12 13 14 다음