rsync를 사용하여 선택한 폴더를 원격 서버에 백업하는 스크립트를 만들었습니다. 스크립트를 수동으로 실행하면 모든 것이 잘 작동합니다. 하지만 시스템이 종료되면 자동으로 수행되기를 원합니다. 여기서 오류가 발생합니다.
13:19:12 mx rsync_update.sh[9512]: Host key verification failed.
13:19:12 mx rsync_update.sh[9506]: rsync: connection unexpectedly closed (0 bytes received so far) [sender]
13:19:12 mx rsync_update.sh[9506]: rsync error: unexplained error (code 255) at io.c(231) [sender=3.2.7]
유닛은 이렇게 생겼어요
[Unit]
Description=Clean on reboot,shutdown
Requires=network.targe rsync.service
After=multi-user.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecStop=/usr/local/bin/rsync_backup.sh
[Install]
WantedBy=multi-user.target
Rsync는 SSH를 통해 작동합니다.
답변1
언제폐쇄(init 0, init 6) 시작하면 이 서비스는 여러 다른 서비스를 시작한 다음 기존 서비스를 종료합니다. 다른 항목이 종료되기 전에 복제본을 시작하도록 사용자 지정 systemd 스크립트에 명시적으로 지정하지 않으면 rsync
프로세스의 어느 시점에서든 서비스가 종료될 수 있으며 이는 좋지 않습니다. ssh
서비스가 종료되기 전이나 후에 발생합니까 ? 파일 시스템이 마운트 해제되기 전이나 후에 발생합니까? 네트워크가 죽기 전인가요, 아니면 후인가요? 등.
rsync 백업이 입력 후 발생하는 첫 번째 서비스인지 확인하고 싶습니다.재시작또는폐쇄및 다른 서비스/대상이 실행 중입니다. 예를 들어 아래 링크의 답변을 믿으며 대부분 솔루션이 있다고 생각하지만 반드시 하나의 답변만 응답하는 것은 아닙니다 sshd
. network-online.target
요구 사항이 주어지면 Wanted By
무엇을 선택하고 지정할지 좀 더 신중하게 고려해야 합니다 Requires
. 혹시 요청하신 유형의 시스템 서비스 템플릿을 게시하겠습니다.