ISC DHCPd 임대 파일을 백업하는 올바른 방법은 무엇입니까?

ISC DHCPd 임대 파일을 백업하는 올바른 방법은 무엇입니까?

에 따르면이 답변, DHCPd 임대 파일은 매시간 삭제됩니다. 목표는 임대 파일을 지속적으로 백업하여 임대가 손실되는 일이 없도록 하는 것입니다. 시간 타이머가 시스템 시간(예: 파일이 오전 1시, 오전 2시, 오전 3시에 다시 작성됨)을 기반으로 하는지 또는 프로세스 시간(service_start + 1h, service_start + 2h 등)을 기반으로 하는지 명확하지 않기 때문에 이는 어렵습니다. 임대 파일이 정확히 오전 3시에 지워지고 임대가 2시 58분 55초에 승인되었다고 가정해 보겠습니다. 임대 파일을 백업하는 서비스는 파일을 정리하기 전에 빠르게 실행해야 합니다.

DHCPd 프로세스는 자체적으로 파일을 /var/lib/dhcpd/dhcpd.leases~. 그렇다면 가장 좋은 방법은 이 파일을 매시간 다른 위치에 백업하는 스크립트를 만드는 것 같습니다. 그러나 DHCPd 프로세스가 다시 시작되고 타이머가 프로세스에 상대적인 경우 백업 작업의 시간 표시가 정렬될 수 있습니다. 이는 한 프로세스가 읽는 동안 다른 프로세스가 쓰는 것으로 끝날 수 있으며 이로 인해 파일이 엉망이 될 수 있습니다( 어떻게 하느냐에 따라 다름). 따라서 백업 작업에는 DHCPd가 시작되는 시점에 대한 지식이 필요합니다. 점점 복잡해지고 있습니다.

임대가 손실되지 않도록 DHCPd 임대 파일을 백업하는 '올바른' 방법은 무엇입니까?

답변1

에서DHCP 소스:

      if (snprintf (backfname, sizeof backfname, "%s~", path_dhcpd_db)            >= sizeof backfname)

[...]

      if (unlink (backfname) < 0 && errno != ENOENT) { 

[...]

      if (link(path_dhcpd_db, backfname) < 0) { 

이전 백업 파일이 삭제된 후 현재 임대 파일이 후행 ~.

Linux에서는이노티파이(7)이벤트 시설에서 하드링크는 생성 이벤트로 간주됩니다.

그러한 이벤트가 발생했을 때 신호를 보내기 위해 inotifywait(패키지에서 ) 를 사용하는 것이 좋습니다 . 유령이 바로 백업 준비가 되어 있을 inotify-tools것으로 예상해야 합니다 /var/lib/dhcpd/dhcpd.leases~(원본에 대한 하드링크입니다). 파일은 매번 다른 파일(다른 inode)이 되므로 적절한 감지를 위해 감시해야 하는 디렉토리입니다. 예를 들어 이 --include옵션은 쉘 처리를 단순화하는 데 사용할 수 있습니다(처리 없음, 읽기 행도 삭제됨). 대체 가능한 임시 변수):

inotifywait -m -e create --include dhcpd.leases~ /var/lib/dhcpd | while read dummy; do
    do_backup /var/lib/dhcpd/dhcpd.leases~
done

명령이 충분히 최신이 아닌 --include경우 이해하지 못할 수 있으므로 이벤트 루프에서 테스트를 수행해야 합니다.

inotifywait -m -e create /var/lib/dhcpd | while read -r dir event filename; do
    if [ "$filename" = dhcpd.leases~ ]; then
        do_backup /var/lib/dhcpd/dhcpd.leases~
    fi
done

또는 incron패키지(적어도 CentOS 8 Stream에서 사용 가능)를 다음과 함께 사용할 수 있습니다.기입비슷하다:

/var/lib/dhcpd IN_CREATE,recursive=false if_correct_file_do_backup $#

if_correct_file_do_backup예를 들어 쉘이 의도한 파일 이름인지 확인하는 경우 :

#!/bin/sh

if [ "$1" = dhcpd.leases~ ]; then
    do_backup /var/lib/dhcpd/dhcpd.leases~
fi

관련 정보