90일 이전 데이터 출력 

그런데 출력 할때  / 기호 빼고 출력 

find /data/141/DAY -maxdepth 1 -type d -mtime +90 -name back-* |sort -n | awk -F'/' '{print $1,$2,$3,$4,$5,$6,$7}'


위의 출력 한내용  삭제.

find /data/141/DAY -maxdepth 1 -type d -mtime +90 -name back-* -exec rm -r {} \;



'Server Story.... > script' 카테고리의 다른 글

find 하여 특정 기간만큼 삭제 time awk  (0) 2014.09.15
rsync  (0) 2014.04.29
Windows 2003 ipsec command  (0) 2014.01.12
Posted by Sumin Family
TAG awk, find, Sort, Time





Linux나 Unix를 쓰다가 Windows를 사용하다 보면 커맨드 명령이 호환되지 않고,
비슷한 명령이 없는지 몰라서 헤메일 때가 있다.

Linux의 find 명령어와 비슷한 윈도우 명령어를 보자

c:\> dir /s /b | find "xlsx"
-> 현재 폴더의 하위 폴더까지 xlsx 를 포함하는 파일을 찾아서 보기


C:\> dir /s /a:d \windows*
-> windows 라는 이름으로 시작하는 디렉토리만 찾기


C:\> netstat -na | findstr "ESTABLISHED" | find "80"
-> netstat 결과를 파이프로 받아서 EST 인 녀석들만 보여주되 | 80 을 포함하는 것만 보기


여기서 중요한 findstr 과 find 도스 명령어에 대해 알고 넘어가야 한다.



find 명령의 경우 옵션이 그리 많진 않아 현재의 findstr 로 대체가 된 상황이다.



아래와 같은 형태로도 가능하다. 


c:\> netstat -na | findstr "LISTEN" | find /c "8080"


-> 8080 이라는 숫자를 포함하고 LISTEN 을 포함하는 netstat 결과의 라인 수를 세기

Posted by Sumin Family

아주 유용하지만 엄청난 옵션에 입이 따~악 벌어지는 find 군!

몇가지 만 알면 수십줄의 코딩을 한줄로 끝낼 수도 있는 find의 옵션을 정리해 봅니다.

 

기본사항

1. * : 모든 것을 의미한다.
2. $ 와 같이 쉘에서 의미를 갖는 문자를 검색할 경우 앞에 "\"를 붙인다.
3. 단어를 검색할 경우 반드시 single quotation(')을 앞뒤에 붙여서 검색한다.
4. 각 옵션은 혼합하여 사용할 수 있다.
5. 숫자 옵션 
   +n : n 이상인 파일 검색
   -n : n 이하인 파일 검색
   n : 정확하게 n과 일치하는 파일 검색

 

 

파일명 검색 -name

예) 파일명에 "php"가 들어간 파일 검색
    # find . -name '*php'

 


용량 검색 -size

예) 용량이 100KBytes 이상인 파일 검색
    # find . -size +100k 

 


파일 형식 -type

f : 일반 파일
d : 디렉터리
l : 심볼릭 링크 파일
s : 소켓 파일

예) 디렉터리이면서 이름 중에 melong 이 들어간 것을 검색
   # find . -type d -name '*melong*'


 

파일의 소유자 -user

예) 소유자가 nobody 인 파일 검색
   # find . -user nobody


 

파일의 수정일자 -mtime

-mtime +n : 오늘을 기준으로 n일 이전에 변경된 파일 검색
-mtime -n : 오늘을 기준으로 n일 이내에 변경된 파일검색

예) 3일 이내에 변경된 파일 검색
   # find . -mtime -3


 

파일의 엑세스 일자 -atime

-atime +n : 오늘을 기준으로 n일 이전에 엑세스한 적이 있는 파일 검색
-atime -n : 오늘을 기준으로 n일 이내에 엑세스한 적이 있는 파일검색

예) 10일 이전에 엑세스한 적이 있는 파일 검색
   # find . -atime +10


 

검색할 디렉터리의 깊이 지정 -maxdepth

지정한 디렉터리에서 n개 깊이의 디렉터리까지 검색한다.

예) 2개의 깊이에 있는 디렉터리까지 검색하여 파일명에 php가 있는 파일 검색
   # find . -name '*php*' -maxdepth 2


 

검색한 파일에 대한 특정한 명령을 실행 -exec 명령어 {} \;

기본 형식 : -exec 명령어 {} \; 
  - 반드시 끝에 \; 를 붙여야 한다.
  - {}에 찾은 파일명이 들어간다.

예) 파일명이 bak로 끝나는 파일을 찾아서 삭제
   # find . -name '*bak' -exec rm {} \;

 

 

find를 잘 설명해 놓은 사이트


 

이 외에도 상당히 많은 옵션이 있으며 정규식을 이용한 파일찾기도 가능하다.

후에 기회가 되는 데로 추가해서 정리할 예정~

 

Posted by Sumin Family

[Linux] 자동 백업 스크립트, DB백업, 복구

##################################

################# 로그파일 삭제 #########

##################################

#!/bin/sh


#delete Log File

find /var/log/au* -ctime +3 -exec rm -f {} \;

find /var/log/apache2/err* -ctime +3 -exec rm -f {} \;

find /var/log/sys* -ctime +3 -exec rm -f {} \;

find /var/log/cro* -ctime +3 -exec rm -f {} \;

find /var/log/daem* -ctime +3 -exec rm -f {} \;

find /var/log/ker* -ctime +3 -exec rm -f {} \;

find /var/log/lpr* -ctime +3 -exec rm -f {} \;

find /var/log/mai* -ctime +3 -exec rm -f {} \;

find /var/log/user* -ctime +3 -exec rm -f {} \;

find /var/log/deb* -ctime +3 -exec rm -f {} \;

find /var/log/mess* -ctime +3 -exec rm -f {} \;

find /var/log/mysql/err* -ctime +3 -exec rm -f {} \;

find /var/webmin/mini* -ctime +3 -exec rm -f {} \;


#############################################


 > vi wwwbackup.sh 
해서 다음과 같이 작성한다.

#!/bin/sh

#mysql DB
mysqldump -u root -p[비번] -A(전부백업한다면) > /backup/mysql_db_bak_$(date +%Y%m%d).sql
mysqldump -u root -p[비번] junn(DB명) > /backup/junn_db_bak_$(date +%Y%m%d).sql

#html
tar cvfpz /backup/html_bak_$(date +%Y%m%d).tar.gz /home

#delete
find /backup -ctime +3 -exec rm -f {} \;


주의할 점은 $(date +%Y~~)하는 곳에서 date 이후 꼭 한칸을 띄울 것

그 다음에 cron 에 등록해야 한다. 자세한 설명은 http://linuxer.pe.kr/tag/cron 참고
(no crontab for root 라는 문구가 나온다면 등록된 것이 없어서 그러니 신경쓰지 말자)

crontab -e 해서 0 3 * * * /backup/wwwbackup.sh

라고 등록해주었다.

잘되었는지는 내일 확인해보도록 해야겠다.

=> 작동을 안했다-_- chmod 755를 안해줘서 실행이 안된 것 같다는 선배의 말씀

그냥 귀찮아서 etc/cron.daily 라는 폴더에 집어넣고 chmod 755해줬다.

==> 작동했다

복구는 

mysql -uuser -ppassword dbname < backup.sql


만약 모두 백업한것이었다면 dbname에도 -A 로 쓴다.

/////////////////////DB 백업, 복구 예제////////////////////////////
  1. Linuxing 2005/06/26 02:25  address  modify / delete  reply

    1. 모든 DB 백업<br />
    mysqldump -u root -p -A > all.sql<br />
    <br />
    2. 특정 DB 백업<br />
    mysqldump -u root -p [DB명] > dbA.sql<br />
    <br />
    3. 특정 Table 백업<br />
    mysqldump - u root -p [DB명] [Table명] > tableA.sql<br />
    <br />
    4. 복구<br />
    mysql -u root -p [target DB명] < tableA.sql

  2. Linuxing 2005/06/26 02:26  address  modify / delete  reply

    // 모든 디비 백업<br />
    # mysqldump -u root -p --all-databases > AllDB_Backup.dump<br />
    <br />
    // 디비 하나만 백업(e.g. mysql이라는 디비를 백업)<br />
    # mysqldump -u root -p mysql > mysql_Backup.dump<br />
    <br />
    // 디비에서 테이블 하나만 백업<br />
    # mysqldump -u root -p mysql user > mysql_userTB_Backup.dump<br />
    <br />
    <br />
    <br />
    // 복구는 어떻게 하는가!!<br />
    . --all-databases 를 사용하여 모든디비백업을 한 경우<br />
    # mysql -u root -p < AllDB_Backup.dump<br />
    <br />
    . 디비 하나만 백업한 경우(디비는 생성되어 있어야 함.)<br />
    # mysql -u root -p mysql < mysql_Backup.dump<br />
    <br />
    . 테이블 백업한 경우(디비는 생성이 되어있어야 함.)<br />
    # mysql -u root -p mysql < mysql_userTB_Backup.dump


'Server Story.... > mysql' 카테고리의 다른 글

mysql backup  (0) 2014.04.23
DB 자동저장 스크립트  (0) 2011.01.26
mysql 백업 및 자동삭제 스크립트  (0) 2010.12.17
우분투 8.04 mysql에서 DB파일의 위치를 변경 방법  (1) 2010.12.17
my sql 튜닝 - 체크사항  (0) 2010.09.10
Posted by Sumin Family

리눅스를 사용하면서 문자열을 가지고 놀려니 참으로 힘들다.


 

grep을 이용하여 문자열을 찾아보자

문법 : grep [OPTION]... PATTERN [FILE] ...

   1 : grep -R "문자열" ./ (현재디렉토리에서 문자열을 찾는다, 하위디렉토리포함)

   2 : grep -Rw "문자열" ./ (1번과 같으나 정확히 일치하는 문자열만)

   3 : grep -Ril "문자열" * -r 2> /dev/null (문자열이 들어간 화일찾기, 대소문자 구분안함)


find를 이용하여 문자열을 찾아보자

문법 : Usage: find [path...] [expression]

   1 : find ./ -exec grep -l "문자열" {} \; 2> /dev/null (문자열찾기)

   2 : find ./ -exec grep -il "문자열" {} \; 2> /dev/null (대소문자구분안함)

   3 : find ./ -exec perl -pi -e 's/찾는문자/바꿀문자/g' {} \; 2> /dev/null (문자열찾운후 치환)


find 를 이용하여 파일찾기

   1 : find / -name 파일명 -type f (파일찾기)

   2 : find / -name 파일명 -type d (디렉토리찾기)

   3 : find / -iname 파일명 -type d (대소문자 구분안함)

   4 : find . | xargs grep "파일명" (하위 디렉토리에서 모든화일 찾기)

'Server Story.... > Linux' 카테고리의 다른 글

리눅스 snmp 설정 및 세션 스크립트  (0) 2010.12.29
Find 명령어 정리 및 찾은후 삭제 관련 건  (0) 2010.12.17
리눅스 찿기 명령어  (0) 2010.12.15
iptable 관련내용  (0) 2010.11.24
리눅스 명령어 모음.  (0) 2010.10.18
리눅스 snmp 활성화 하기  (0) 2010.10.11
Posted by Sumin Family


티스토리 툴바