logrotate 파일의 이름을 가져오시겠습니까?

logrotate 파일의 이름을 가져오시겠습니까?

저는 Linux와 bash 스크립팅을 처음 접한 지 2주 밖에 안 되었기 때문에 아무것도 모른다고 가정하고 시작하겠습니다.

개발상의 이유로 로그 파일을 다른 위치와 이름으로 복사해야 합니다. 내 logrotate 파일은 다음과 같습니다.

/pub/share/logs/results.txt {
    daily
    rotate 30
    dateext
    compress
    delaycompress
    missingok
    notifempty
    postrotate
        sh /pub/share/scripts/result_rotate.sh $1 > /dev/null
    endscript
}

Bash 스크립트는 간단합니다.

#!/bin/bash

date=$(date +%Y%m%d)
cp $1-$date /pub/share/reports/data.log

내가 그럴지는 모르겠지만가지다스크립트 파일에 넣거나 후회전 블록에 입력할 수 있다면 지금은 이것이 작동합니다.

회전할 파일의 이름을 전달하지만 날짜 확장자(따라서 위의 날짜 코드)로 이름이 변경된 후에 전달합니다. 이것이 안전한 방법인가요? 올바른 일치가 이루어지지 않는 상황이 발생합니까?

답변1

응, 그냥 쓰면 돼.백 스핀막힘:

cp $1-$(date +%Y%m%d) /pub/share/reports/data.log >/dev/null

오늘 날짜처럼 더 나쁜 경우에는백 스핀 다음 날 실행되도록 게시되었으므로 cp명령으로 파일을 복사할 수 없습니다. 이렇게 하려면 오늘 날짜가 회전된 파일 대신 항상 하루 전의 파일을 가져올 수 있습니다.

cp $1-$(date -d'-1day' +%Y%m%d) /pub/share/reports/data.log >/dev/null

또는 물론 오늘 날짜 파일과 어제 날짜 파일 두 개를 복사할 수도 있습니다.

관련 정보