[LINUX] diff 사용하기

두개의 파일을 비교해야 할때 사람이 눈이 가장 중요하긴 하지만 내용이 길거나 복잡하면 쉽게 비교가 되지 않죠.

그럴때 쓸만한 명령어 diff 입니다. 다음과 같이 두가지 파일이 있다고 가정해 보겠습니다.

text1

$ cat text1
HelloWorld
Nice to meet you.
What are you doing now?
Ok Ok.
Time to go.

text2

$ cat text2
HelloWorld
Glad to meet you.
What are you doing now?
Not bad
Time to go...

보는 순간 다른점이 파악되시나요? diff 를 사용해 보겠습니다.

$ diff -urN text1 text2
--- text1       2009-02-16 21:06:43.000000000 +0900
+++ text2       2009-02-16 21:07:12.000000000 +0900
@@ -1,5 +1,5 @@
 HelloWorld
-Nice to meet you.
+Glad to meet you.
 What are you doing now?
-Ok Ok.
-Time to go.
+Not bad
+Time to go...

text1가 text2와 비교될때 빠진 부분은 -로 나오고 추가된 부분은 +로 나옵니다.

위와 같이 간단하게 파일들의 차이점을 비교해 볼 수 있습니다.

[Apache] SetEnvIf를 이용하여 Access Log 기록 여부 변경 하기

Apache에서는 SetEnvIf를 이용하여 로그 여부를 정의할 수 있습니다.

특정 설정을 환경변수로 저장 후에 그것을 이용하여 로그 여부를 정의하는 식으로 하시면 됩니다.
[code]SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] …[/code]

첫번째 인자인 attribute에는 다음의 값이 들어갈 수 있습니다.

1. HTTP HEADER


  • Host

  • User-Agent

  • Referer

  • Accept-Language
2. COMMON


  • Remote_Host – 요청하는 클라이언트의 호스트명

  • Remote_Addr – 요청하는 클라이언트의 IP 주소

  • Server_Addr – 요청을 받는 서버의 IP 주소

  • Request_Method – 사용한 Method 명 (GET, POST 등)

  • Request_Protocol – 요청의 프로토콜 이름과 버젼 (“HTTP/1.1” 등)

  • Request_URI – 요청의 Query String을 제외한 호스트명 이후의 주소
3. 기존의 환경 변수

특정 IP의 접속을 로그로 남기지 않을 경우에는 다음과 같은 설정을 하여 로그를 남기지 않도록 할 수 있습니다.
[code]SetEnvIf Remote_Addr “123.123.123.123” dont_log[/code]
적용할 가상 호스트의 로그 부분에 다음과 같이 추가합니다.
[code]CustomLog logs/access_log common env=!dont_log[/code]
access_log를 기록할때 dont_log 환경변수가 없을경우에만 기록을 하라는 것으로 생각하면 됩니다.