오늘 아침에 newsyslog 교체 후 진행 중인 rsync의 출력이 rsync 로그에 나타나지 않는다는 사실을 발견했습니다. 잃어버렸어
다시 말해서,
- rsync를 실행하면 /var/log/rsync에 기록됩니다.
- newsyslog는 로그 회전을 수행합니다.
- 새로운 /var/log/rsync에 출력이 없습니다.
- 내가 볼 수있는 어디에도 캡처 출력이 없습니다.
내가 뭘 잘못했나요?
이것은 rsync 명령입니다(cygwin을 실행하는 Windows 시스템의 rsyncd 모듈에서 추출됨). 이는 rsnapshot 명령의 일부이지만 이 질문과 관련이 없습니다.
/usr/local/bin/rsync -av --delete --relative --delete-excluded --stats --log-file=/var/log/rsync --human-readable --no-owner --no-group --exclude-from=/yada/yada/.rsnapshot_excludes 192.168.3.130::INC-10890_data/ /zfspoolname/archives/daily.0/LOCATIONSIGNIFIER/INC-10890_data/
이것은 /var/log/rsync.0의 마지막 5줄입니다(압축 해제 후).
[root@offsite1 ~]# tail -5 /var/log/rsync.0
2019/02/11 01:03:54 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_102.bmp
2019/02/11 01:03:55 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_103.bmp
2019/02/11 01:03:55 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_104.bmp
2019/02/11 01:03:55 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_105.bmp
2019/02/11 01:03:55 [20023] >f+++++++++ master/20170801/000054420170801010001/000054420170801010001oct_c_106.bmp
/var/log/rsync의 내용은 다음과 같습니다.
> [root@offsite1 ~]# tail -5 /var/log/rsync Feb 11 01:00:00 offsite1
> newsyslog[61988]: logfile turned over
이것은 오늘 아침에 rsync 작업을 종료했을 때 화면에 나타난 마지막 줄이었습니다(tail -f /var/log/rsync 명령을 밤새 실행해 두었습니다). tail -f를 실행했기 때문에 /var/log/rsync에 표시되어야 합니다. newsyslog가 관련되지 않은 경우 /var/log/rsync에서 이러한 유형의 출력을 경험한 적이 있습니다.
> 2019/02/11 07:13:52 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_027.bmp
> 2019/02/11 07:13:52 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_028.bmp
> 2019/02/11 07:13:53 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_029.bmp
> 2019/02/11 07:13:53 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_030.bmp
> 2019/02/11 07:13:53 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_031.bmp
> 2019/02/11 07:13:53 [20023] >f+++++++++
> master/20170914/000504720170914030001/000504720170914030001oct_c_032.bmp
> 2019/02/11 07:13:54 [12868] rsync error: received SIGINT, SIGTERM, or
> SIGHUP (code 20) at rsync.c(689) [generator=3.1.3] 2019/02/11 07:13:54
> [20023] rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at
> io.c(504) [receiver=3.1.3]
이것은 /usr/local/etc/newsyslog.conf.d/rsync의 내용입니다.
#
# The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'.
#
# logfilename [owner:group] mode count size when flags [/pid_file] [sig_num]
/var/log/rsync 644 13 * $W1D01 JCN
마침내
[root@offsite1 ~]# uname -a
FreeBSD offsite1.domanname.com 12.0-RELEASE-p3 FreeBSD 12.0-RELEASE-p3 GENERIC amd64
답변1
newsyslog
로그 파일을 새 이름( )으로 이동 /var/log/rsync.0
하고 압축합니다( 에서 사용한 플래그 /var/log/rsync.0.bz2
로 인해 ). 그런 다음 이전 이름( 의 플래그 )으로 새 파일을 만듭니다 .J
newsyslog.conf
C
newsyslog.conf
이는 파일에 쓰는 프로세스가 더 이상 존재하지 않는 파일에 쓰는 것을 의미합니다(글쎄, 존재하지만 이름이 없습니다). 파일 핸들이 닫히면 해당 inode /var/log/rsync
에는 더 이상 이름이 없으며 파일이 사용하는 공간이 회수됩니다. rsync
파일이 압축되면 inode의 이름이 손실됩니다.
HUP
일반적으로 시스템 서비스는 를 보내 신호를 보냅니다 newsyslog
. 이는 일반적으로 다음을 의미합니다.다시 열다그들의 쓰기 로그 파일. 이는 공백을 쓰는 대신 새로 지워진 로그 파일에 쓰기를 시작한다는 의미입니다.
rsync
내가 아는 한, 그러한 기능이 없으므로 로그 파일 회전 지점 이후에 작성된 모든 내용은 손실됩니다.
rsync.0
백업 파일이 생성된 방식에 따라 rsync
계속해서 쓸 수 있습니다.저것회전된 로그의 압축을 비활성화하는 경우에만 이 파일을 사용할 수 있습니다.
p
플래그 열의 플래그를 사용하면 이 작업을 수행할 수 있습니다 newsyslog.conf
. 이렇게 하면 0번째 회전 로그 파일은 압축되지 않은 상태로 유지되지만 이전 로그 파일은 압축됩니다. 바라보다newsyslog.conf(8)
.
첫 번째 로그에 대해서만 압축을 비활성화 하면 rsync
동일한 프로세스가 프로세스 전체에서 활성 상태로 유지되는 경우 여전히 문제가 발생할 수 있습니다.두번째로그 파일은 rsync.0
파일 이름이 변경된 rsync.1
후 압축되므로 순환됩니다 rsync.1.bz2
(이것은 동일한 문제입니다). 로그 파일 압축 비활성화완전히이 문제를 해결할 것입니다.