rmtimef

   rmtimef

  사용법


	rmtimef [-d directory] pattern
	rmtimef -D -c condition [-k num] [-v] [-d directory] pattern
	rmtimef -L -c condition [-k num] [-d directory] pattern
	rmtimef -V

	Options are as follows:

	-?               print this help
	-c condition     condition to select deleting file
	                   conditon are: 'month=num', 'day=num', hour=num', 'minute=num' or 'date=format'
	                                  format) yyyy-mm-dd or yyyy-mm-dd.HH:MM:SS
	-D               delete selected files
	-d directory     specify directory to search the pattern; (default: .)
	-k num           keep num files; default: 1
	-L               list file names marked as 'delete' or 'keep'
	-V               show version
	-v               verbose mode

	pattern          file name pattern; it should have at least '[yy]yy' and 'mm' in {}
	                 key characters in {}: 'yyyy', 'mm', 'dd', 'HH', 'MM', 'SS', ':', '-', '/', '.', '_', ',', '?'

EXAMPLE)
	# rmtimef -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
	# rmtimef -L -c month=12 -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
	# rmtimef -L -c day=365 -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
	# rmtimef -L -c date=2017-01-01 -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
	# rmtimef -L -c day=31 -d /perfdata data.{yyyymmdd.HHMMSS}.??
	# rmtimef -L -c day=31 -k 3 -d /perfdata data.{yyyymmdd.HHMMSS}.??
  설명

rmtimef 명령어는 지정한 디렉토리에서 지정한 날짜/시간 패턴의 형식을 가지고 있는 파일명을 보여주거나 삭제한다.
rmtimef 명령어는JSparm의 mmonx 시스템 통계정보 서버가 생성하는 파일이나 getdata 명령어가 생성하는 파일들을 일정 시간이 지나면, 자동으로 지울 수 있도록 도와 주는 명령어있다.

mmonx 데몬 프로세스는 /opt/JSparm/dbspace 디렉토리에 한달에 하나씩 mdbxx-yyyy.mm 형식을 파일을 생성한다.

다음과 같이 명령어를 실행하면, /opt/JSparm/dbspace 디렉토리에서 mdbxx-yyyy.mm 형식의 파일명을 가진 파일명들을 보여준다.

# rmtimef -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
mdbxx-2018.11
mdbxx-2018.10
mdbxx-2018.09
mdbxx-2018.08
mdbxx-2018.07
mdbxx-2018.05
mdbxx-2018.04
mdbxx-2018.03
mdbxx-2018.02
mdbxx-2018.01
mdbxx-2017.12
mdbxx-2017.11
mdbxx-2017.10
mdbxx-2017.09

rmtimef 명령어에 지정할 수 있는 패턴의 형식은 다음과 같다.

	중괄호{} 안에는 시간 형식을 지정한다. 
	중괄호는 시간 형식을 표현하기 위한 것이며 한번만 사용된다.
	시간형식에 사용되는 것은 다음관 같다.

		yyyy	4 자리 연도 숫자
		yy	2 자리 연도 숫자. 실재 연도수는 2000 + yy 가 됨.
		mm	2 자리 수의 달(01 - 12)
		dd	2 자리 수의 일(01 - 31)
		HH	2 자리 수의 시간(00 - 23)
		MM	2 자리 수의 분(00 - 59)
		SS	2 자리 수의 초(00 - 60)

	중괄호{} 안에 다음의 문자는 문자 그래로 인식한다.

		':', '-', '/', '.', '_', ',', '?'

	위에 지정한 문자 이외에 문자가 중괄호{} 안에 있으면, 오류가 발생한다.

	중괄호 밖에 있는 문자는 문자를 그대로 사용한다. '*'와 '{' 와 '}' 는 파일명에 사용할 수 없다.
	'?' 글자는 임의 하나의 글자와 일치하는 메타 글자이다. 
위의 명령어에서 패턴으로 mdbxx-{yyyyy.mm} 을 지정하였다. 이 패턴에 일치하는 파일을 -d 옵션이 지정한 디렉토레에서 찾는다.
-d 옵션을 지정하지 않으면, 현재 디렉토리가 사용된다.

-c 옵션을 사용하여, 삭제하려는 조건을 지정할 수 있다. 지정할 수 있는 조건은 다음과 같다.

month=num rmtimef 명령어를 실행한 달(month)을 기준으로 num 달의 데이타를 유지하고, 그 이전의 달의 데이타를 삭제 대상으로 선정한다.

month=1 이라고 지정하면, rmtimef 명령어를 실행한 달, 한달의 데이타를 유지하고, 한달 이전의 데이타를 삭제 대상으로 선정한다.
1 달전의 의미는 물리적인 시간 약 28 ~ 31일의 시간의 의미하는 것이 아니라 달의 숫자가 바뀌는 것을 의미한다.

예를 들어, 오늘의 9월 1일이고, 8월 30일에 만들어진 파일있다고 가정하면, 1 달 전의 파일명에는 8월 30의 파일명이 포함된다. 달의 숫자가 바뀌면 1달이 지난 것이다.

-c month=1 이라고 지정하여 rmtimef 명령어를 실행하면, 명령어를 실행한 달의 데이타는 유지하고, 지난달의 데이타 부터 삭제 대상이 된다. 명령어를 실행한 달의 1일 00시 00분 00초 이전의 파일명을 삭제 대상으로 한다.
(즉, 달수로 이번달의 데이타만 유지한고, 지난달 부터 그 이전의 데이타를 삭제 대상으로 간주함).

예를 들어, 오늘 날짜가 2018년 11월 8일 이라고 가정하고, -c month=1 을 지정하였다면,
2018년 11월 1일 00시 00분 00초 이전의 파일명을 삭제 대상으로 선정한다.
즉, 2018년 10월 파일명 부터 삭제 대상이 된다.

실제적인 시간이 1초만 차이가 나더라도, 월(month)에 해당하는 숫자가 바뀌면, month=1에 의해 삭제 대상이 된다.

day=num rmtimef 명령어를 실행한 일(day)을 기준으로 num 일의 데이타를 유지하고, 그 이전의 일의 데이타를 삭제 대상으로 선정한다.

-c day=1 이라고 지정하면, 오늘의 데이타만 유지하고, 어제 부터 그 이전의 파일은 삭제 대상이 된다.

rmtimef 명령어를 실행한 날 00시 00분 00초 이전의 시간을 가지고 있는 파일을 삭제 대상으로 선정한다. 즉, 어제부터 그 이전의 날의 모든 파일명을 삭제한다.

실제적인 시간이 1초만 차이가 나더라도, 일(day)에 해당하는 숫자가 바뀌면, day=1에 의해 삭제 대상이 된다.

hour=num rmtimef 명령어를 실행한 시(hour)을 기준으로 num 시간의 데이타를 유지하고, 그 이전의 시의 데이타를 삭제 대상으로 선정한다.

-c hour=1 이라고 지정하면, 현재 시간의 데이타만 유지하고, 그 이전의 시간은 삭제 대상이 된다.

rmtimef 명령어를 실행한 시간의 00분 00초이전의 파일명을 삭제 대상으로 선정한다.

실제적인 시간이 1초만 차이가 나더라도, 시(hour)에 해당하는 숫자가 바뀌면, hour=1에 의해 삭제 대상이 된다.

minute=num rmtimef 명령어를 실행한 분(minute)을 기준으로 num 분의 데이타를 유지하고, 그 이전의 분의 데이타를 삭제 대상으로 선정한다.
second=num rmtimef 명령어를 실행한 초(second)을 기준으로 num 초의 데이타를 유지하고, 그 이전의 초의 데이타를 삭제 대상으로 선정한다.
count=num 파일명을 최신 날짜 순서로 정렬한 후에 최신 날짜의 num 개의 파일을 유지하고 나머지의 것을 삭제 대상으로 선정한다.

NOTE:
V10.5에서는 count에 지정한 갯수 보다 1개 더 적게 유지하는 오류가 있음.
예를 들어, count=5 라고 지정하면, 최신 날짜 순서 최근 5개 파일을 유지하고 6개째부터 파일을 삭제하여야 하는데,
4개만 유지하고 5개쨰부터 삭제하는 오류가 있음.
(V10.6에서 정상적으로 동작하도록 수정되었음)

date=date_format 삭제 대상을 선정하는 시간을 직접 지정한다. 시간을 지정하는 형식은 다음과 같다.
	'yyyy-mm-dd' 또는 'yyyy-mm-dd.HH:MM:SS'

	yyyy-mm-dd 형식으로 시간을 지정하면, yyyy-mm-dd.00:00:00 을 지정한 것과 같다.

date=2018-09-11 라고 지정하면, 2018년 09월 11일 00시 00분 00초까지의 데이타를 유지하고, 이전에 날짜를 가지고 있는 파일을 삭제 대상으로 선정한다.

-c day=1 이라고 지정하면, rmtimef 명령어를 실행한 시점에서 1일, 즉 오늘의 데이타만 유지하고, 그 이전의 파일을 삭제 대상으로 선정한다.
-c day=30 이라고 지정하면, rmtimef 명령어를 실행한 시점에서 최근 30일까지 데이타를 유지하고, 그 이전의 파일을 삭제 대상으로 선정한다.
-c hour=10 이라고 지정하면, rmtimef 명령어를 실행한 시점에서 최근 10시간까지 데이타를 유지하고, 그 이전의 파일을 삭제 대상으로 선정한다.

-c count=3 이라고 지정하면, rmtimef 명령어에 지정한 패턴에 일치하는 파일을 최신 날짜와 시간으로 정렬하여
                            상위 3개의 파일만 유지하고 나머지 파일을 삭제 대상으로 선정한다.

mmdbxx-2018.08과 같이 일자(day)와 시분초 정보가 없는 파일명은 일자는 01로 간주하고, 시분초는 00:00:00으로 간주한다.
mmdbxx-2018.08 파일의 시간은 2018년 08월 01일 00시 00분 00초에 만들어진 것으로 간주한다.

-L 옵션과 -c 옵션을 함께 사용하면, -c 옵션에 지정한 조건에 따라 지워질 파일과 보관될 파일이 무엇인지 확인할 수 있다.
파일이 지워지지는 않는다.
(명령어는 2018년 11월 8일에 실행함)

# rmtimef -L -c month=3 -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
  keep: /opt/JSparm/dbspace/mdbxx-2018.11
  keep: /opt/JSparm/dbspace/mdbxx-2018.10
  keep: /opt/JSparm/dbspace/mdbxx-2018.09
delete: /opt/JSparm/dbspace/mdbxx-2018.08
delete: /opt/JSparm/dbspace/mdbxx-2018.07
delete: /opt/JSparm/dbspace/mdbxx-2018.05
delete: /opt/JSparm/dbspace/mdbxx-2018.04
delete: /opt/JSparm/dbspace/mdbxx-2018.03
delete: /opt/JSparm/dbspace/mdbxx-2018.02
delete: /opt/JSparm/dbspace/mdbxx-2018.01
delete: /opt/JSparm/dbspace/mdbxx-2017.12
delete: /opt/JSparm/dbspace/mdbxx-2017.11
delete: /opt/JSparm/dbspace/mdbxx-2017.10
delete: /opt/JSparm/dbspace/mdbxx-2017.09

-v 옵션을 추가해서 실행하면, 삭제 대상을 선정하는 시간 정보를 보여준다.

# rmtimef -L -v -c month=3 -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
[deleting condition] file before the time '2018-09-01.00:00:00'
  keep: /opt/JSparm/dbspace/mdbxx-2018.11
  keep: /opt/JSparm/dbspace/mdbxx-2018.10
  keep: /opt/JSparm/dbspace/mdbxx-2018.09
delete: /opt/JSparm/dbspace/mdbxx-2018.08
delete: /opt/JSparm/dbspace/mdbxx-2018.07
delete: /opt/JSparm/dbspace/mdbxx-2018.05
delete: /opt/JSparm/dbspace/mdbxx-2018.04
delete: /opt/JSparm/dbspace/mdbxx-2018.03
delete: /opt/JSparm/dbspace/mdbxx-2018.02
delete: /opt/JSparm/dbspace/mdbxx-2018.01
delete: /opt/JSparm/dbspace/mdbxx-2017.12
delete: /opt/JSparm/dbspace/mdbxx-2017.11
delete: /opt/JSparm/dbspace/mdbxx-2017.10
delete: /opt/JSparm/dbspace/mdbxx-2017.09

-D 옵션과 -c 옵션을 함께 사용하면, 조건에 맞는 파일을 삭제한다.

# rmtimef -D -v -c month=3 -d /opt/JSparm/dbspace mdbxx-{yyyy.mm}
[deleting condition] file before the time '2018-09-01.00:00:00'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.08'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.07'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.05'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.04'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.03'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.02'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2018.01'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2017.12'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2017.11'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2017.10'
executing 'rm -rf /opt/JSparm/dbspace/mdbxx-2017.09'

위의 명령어에서 -v 옵션을 지정하였기 때문에, 어떤 파일이 rm 명령어로 지워지는지 보여준다. -v 옵션을 지정하지 않으면, 아무런 메세지 없이 파일을 지운다.

rmtimef 명령어를 사용하여 mdbxx-yyyy.mm 파일을 최신의 13개 데이타만 보관하고 그 나머지는 삭제하려면,
다음과 같은 명령어를 crontab 에 등록하면 된다.

	0 1 1 * * /opt/JSparm/bin/rmtimef -d /opt/JSparm/dbspace -D -c count=13 mdbxx-{yyyy.mm}
위의 crontab 에 넣은 명령어는 매월 1일 01시 00분에 rmtimef 명령어를 실행한다.
즉, 한달에 한번씩 실행한다.

/opt/JSparm/bin/getdata 명령어로 시스템 통계 정보를 수집할 수 있는데, 이 명령어가 수집한 데이타를 data.yyyymmdd.HHMMSS.interval 형식의 디렉토리를 만들고, 그 디렉토리 안에 여러 개의 파일을 만든다.

# /opt/JSparm/bin/getdata -A -i 60 -t 24 -B
Start to gather system info: interval 60 seconds, time: 24
Collecting data: vmstat mpstat iostat netinfo psinfo tsinfo
Data directory: ./data.20181008.105056.60

getdata 명령어를 24시간 동안 매일 실행한다면, 다음과 같은 파일명이 하루에 1개의 디렉토리가 만들어 진다.

# cd /perfdata
# ls -1
data.20181027.000000.60
data.20181028.000000.60
data.20181029.000000.60
data.20181030.000000.60
data.20181031.000000.60
data.20181101.000000.60
data.20181102.000000.60
data.20181103.000000.60
data.20181104.000000.60
data.20181105.000000.60
data.20181106.000000.60
data.20181107.000000.60
data.20181108.005056.60

# rmtimef data.{yyyymmdd.HHMMSS}.??
data.20181108.005056.60
data.20181107.000000.60
data.20181106.000000.60
data.20181105.000000.60
data.20181104.000000.60
data.20181103.000000.60
data.20181102.000000.60
data.20181101.000000.60
data.20181031.000000.60
data.20181030.000000.60
data.20181029.000000.60
data.20181028.000000.60
data.20181027.000000.60

# rmtimef -D -v -c count=10 data.{yyyymmdd.HHMMSS}.??
executing 'rm -rf data.20181029.000000.60'
executing 'rm -rf data.20181028.000000.60'
executing 'rm -rf data.20181027.000000.60'

getdata 명령어로 매일 한번씩 수집한 데이타가 있는데, 최근 10개의 데이타만 유지하고 나머지는 지우려면, 다음과 같이 crontab에 등록할 수 있다.

	0 1 * * * /opt/JSparm/bin/rmtimef -d /perfdata -D -c count=10 data.{yyyymmdd.HHMMSS}.60
위의 명령어는 매일 01시 00분에 rmtimef 명령어를 실행한다.

다음은 jfind 명령어의 옵션이다.

옵션설명
-c condition -c 옵션을 사용하여 삭제할 파일을 선정한다.

contition에는 다음 중 하나를 지정할 수 있다.

	'month=num', 'day=num', hour=num', 'minute=num' or 'date=format'

		format) yyyy-mm-dd or yyyy-mm-dd.HH:MM:SS
-D -D 옵션을 지정하면, -c 옵션에 의해 선정된 파일을 삭제한다.
-d directory 지정한 패턴의 파일을 찾을 디렉토리를 지정한다.
-k num -c 옵션을 사용하며, 삭제할 파일을 선정하는데, 삭제 조건과 관계없에 -k 옵션에 지정한 개수 만큼의 파일을 항상 지우지 않고 유지한다.
디폴트 값은 1 이다. 즉, 최소한 1개의 파일은 항상 유지한다.
-L -L 옵션을 지정하면, -c 옵션에 의해 선정된 결과를 'keep' 또는 'delete' 로 보여준다. 파일을 삭제하지 않는다.
-V -V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
-v -v 옵션을 지정하면, 파일 삭제 조건에 해당하는 시간 정보와 파일이 삭제될 경우, 삭제되는 파일명이 출력된다.