팰월드 서버 특정 시간마다 백업 및 재시작하는 방법

팰월드 서버를 운영하면서 특정 시간마다 서버를 백업하고 재시작하는 방법입니다. 팰월드 서버가 느려지거나 충돌하거나 등의 문제가 일어났을 때 서버를 재시작하는 것도 한가지 방편이 될 수 있습니다.

특정 시간마다 서버 백업 및 재시작 설정하기

24시간 서버를 운용할 경우 사람들이 잘 플레이하지 않는 심야 시간에 서버를 백업하고 재부팅하면 메모리 등이 정리되면서 서버가 느려지는 등의 문제를 해결할 수 있습니다.

이때 사용하는 건 cron을 이용하는데, 아래의 방법으로 진행하시면 됩니다.

재시작 스크립트 만들기

#!/bin/bash

# Docker 컨테이너 이름 설정
CONTAINER_NAME="palworld-server"
CONTAINER_DIR="/home/serverfile"

# 서버 종료 전에 알림을 사용자에게 보내기
docker exec -i $CONTAINER_NAME rcon-cli "Broadcast 60 seconds until the server restarts. Please log out for a safe shutdown."

# 50초 대기
sleep 50

# 세이브&백업
docker exec -i $CONTAINER_NAME backup

# 서버 종료
docker exec -i $CONTAINER_NAME rcon-cli "Broadcast The server will restart in 10 seconds."

# 10초 대기
sleep 10

# Docker 이미지 업데이트
cd $CONTAINER_DIR
docker-compose pull
docker-compose down
docker-compose up -d

# 업데이트 완료 메시지
echo "서버가 성공적으로 업데이트되었습니다."

여기 코드를 사용했는데, 명령어 일부가 잘못되어 있어 수정했습니다. 위 코드 파일을 받으려면 아래 링크를 누르시면 됩니다. 컨테이너 이름을 바꿨거나 docker-compose.yml 파일 위치가 다르다면 CONTAINER_NAME과 CONTAINER_DIR 항목을 수정하면 됩니다.

docker-restart.sh

권한 부여하기

docker-restart.sh 파일을 탐색기에 붙여넣고, 터미널에 명령어를 입력해 파일에 권한을 부여해봅시다.

sudo ./docker-restart.sh
sudo chmod 666 /var/run/docker.sock

docker-restart.sh와 docker.sock에 권한을 부여했습니다.

크론 예약하기

먼저 로컬 시간을 한국 시간에 맞춰야 합니다.

sudo timedatectl set-timezone Asia/Seoul

코드를 입력하여 크론 서버를 한국 시간에 입력해줍시다. date를 입력해보면 시간이 한국 시간(KST)로 표기되는 걸 확인할 수 있습니다.

이제 크론 편집기를 불러옵시다.

crontab -e

입력하여 편집기에 실행 명령어를 입력하세요.

0 3 * * * /경로/docker-restart.sh 

왼쪽 탐색기를 보고 docker-restart.sh가 있는 절대 경로를 입력하세요. /home/palworld/docker-restart.sh 이런 식입니다. 제일 앞의 슬래시(/)를 빠트리면 안됩니다.

이렇게 하면 새벽 3시마다 1분 뒤 서버를 재시작한다는 메시지가 뜨고, 새벽 3시에 서버를 백업하고 재시작합니다. 만약 3시에 맞춰서 하려면 59 2 * * *를 넣으면 됩니다.

이후 Ctrl+X를 눌러 편집기를 빠져나오면서 저장도 하면 됩니다. 0 3 * * *이 뭔지 궁금하신 분은 바로 아래를 확인하시면 됩니다.

각 필드의 의미(* * * * *)

필드의미값의 범위예시
작업이 실행될 분0 - 5930 (30분)
시간작업이 실행될 시간0 - 239 (오전 9시)
작업이 실행될 일1 - 3115 (15일)
작업이 실행될 월1 - 126 (6월)
요일작업이 실행될 요일0 - 6 (0 = 일요일)1 (월요일)

예시

표현식설명실행 시점
* * * * *매 분마다 실행00:01, 00:02, 00:03, ..., 23:59
0 * * * *매 시간의 첫 번째 분에 실행00:00, 01:00, 02:00, ..., 23:00
30 9 * * *매일 오전 9시 30분에 실행09:30
0 12 * * 1매주 월요일 오후 12시에 실행월요일 12:00
0 0 1 * *매달 1일 00:00에 실행매달 1일 자정(00:00)
*/5 * * * *매 5분마다 실행00:05, 00:10, 00:15, ..., 23:55
0 0 1-7 * *매월 1일부터 7일까지 매일 자정에 실행1일, 2일, 3일, ..., 7일 자정(00:00)
  • * : 모든 값 (예: 모든 분, 모든 시간)
  • , : 여러 값 (예: 1,2,3은 1, 2, 3일)
  • - : 범위 (예: 1-5는 1일부터 5일까지)
  • / : 간격 (예: */5는 5분 간격으로 실행)

이제 크론 설정도 끝났으니 재시작 준비는 완벽합니다. 그런데 저는 크론이 돌아가는데도 오류 인지 제대로 작동을 안한 적이 있습니다. 혹시 모르니 크론 서비스를 재시작 해줍시다.

sudo systemctl restart cron

명령어로 크론 서비스까지 재시작하면 이제 준비는 끝났습니다. 위 방법대로 진행했으면 매일 새벽 3시에 팰월드 서버가 백업되면서 재시작됩니다.

마지막으로 현재 시간보다 1~2분 뒤로 설정하여 접속 도중에 메시지가 정상 수신되는지, 서버가 재실행되는지 확인해보는 것도 좋습니다.

백업 파일 경로 및 복원 방법

/home/serverfile/palworld/backups/

이 블로그에 있는 내용대로 서버를 만들었다면 백업 파일은 여기에 저장됩니다. 매일 새벽 3시에 파일이 백업되므로 적당한 시점에 오래된 파일들을 제거하여 용량을 확보할 수 있습니다. 물론 구글 클라우드는 그 전에 서버를 옮길 확률이 높으므로 크게 신경 쓸 필요는 없을 겁니다.

중요한 건 서버를 복원할 필요가 있을 때입니다. 이때는 터미널에 아래의 명령어를 입력하세요.

docker exec -i 서버명 restore

이렇게 하면 Backup List가 나타납니다. 백업 파일 중 원하는 시점을 선택하여 리스트 번호를 입력하고 엔터. 이후 y를 눌러서 복원하면 됩니다. 이 명령어는 서버가 실행되고 있는 상태에서 작동합니다. 종료된 상태에서 복원하는 방법은 간단합니다.

백업 파일 경로로 이동하여 압축파일을 연 뒤, /home/serverfile/palworld/Pal/ 경로에 Saved 폴더 채로 붙여넣어서 덮어씌우면 끝입니다.

댓글 등록하기