백업 스크립트 – systemd 타이머 등록 150 150 phobe

백업 스크립트 – systemd 타이머 등록

리눅스 서비스 관련 설정 파일이 담긴 /etc 주요 파일과 디렉토리를 일정 주기로 백업하는 프로세스를 만들어 봄.

백업 스크립트 /usr/local/bin/backup-etc.sh
스크립트 보조 파일 – 디렉토리 포함한 백업 리스트 /root/shell/conf/backup_list.txt
스크립트 보조 파일 – 백업 제외 리스트 /root/shell/conf/backup_exc_list.txt
수행 로그는 /home/user/logs/backup-etc-[날짜].log
에러 로그는 /home/user/logs/backup-etc-error-[날짜].log 로 생성 <- 에러가 없으면(빈 파일) 생성한 로그 지움.

~]# ll /usr/local/bin/
합계 16
-rwx------. 1 root root 7755  8  6  2025 backup_etc.sh
-rwx------. 1 root root 2162  8  8  2025 check_traffic.sh
-rwx------. 1 root root 3712  8  7  2025 use_ram_php-fpm.sh

스크립트를 systemd 에 등록. 트랜드에 맞게 cron 에 등록하지 않고, systemd service, timer 로 실행 주기 관리하도록 함.

~]# vi /etc/systemd/system/customs-backup-etc.service
[Unit]
Description=Daily /etc Backup Service
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup_etc.sh
User=root
Group=root
# 서비스를 실행할 때 작업 디렉토리.
# backup_list, backup_exc_list 참조.
WorkingDirectory=/root/shell/
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

~]# vi /etc/systemd/system/customs-backup-etc.timer
[Unit]
Description=Run daily /etc backup

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
Unit=customs-backup-etc.service

[Install]
WantedBy=timers.target

~]# systemctl daemon-reload
~]# systemctl enable customs-backup-etc.timer
Created symlink from /etc/systemd/system/timers.target.wants/customs-backup-etc.timer to /etc/systemd/system/customs-backup-etc.timer.
~]# systemctl start customs-backup-etc.timer
~]# systemctl status customs-backup-etc.timer
 customs-backup-etc.timer - Run daily /etc backup
   Loaded: loaded (/etc/systemd/system/customs-backup-etc.timer; enabled; vendor preset: disabled)
   Active: active (waiting) since 수 2025-08-06 11:48:56 KST; 15s ago

 8월 06 11:48:56 server.gldigital systemd[1]: Started Run daily /etc backup.
~]# systemctl list-timers customs-backup-etc.timer
NEXT                         LEFT     LAST PASSED UNIT                     ACTIVATES
 2025-08-07 03:00:00 KST  15h left n/a  n/a    customs-backup-etc.timer customs-backup-etc.service

1 timers listed.
Pass --all to see loaded but inactive timers, too.

매일 3시 customs-backup-etc.service 에 등록 된 customs-backup-etc.timer 가 /usr/local/bin/backup_etc.sh 스크립트를 수행함.

# 타이머 등록 현황 확인
~]# systemctl list-timers
NEXT                         LEFT       LAST                         PASSED              UNIT                         ACTIVATES
 2026-04-23 15:20:00 KST  21min left  2026-04-23 14:50:00 KST  8min ago            customs-use-ram-pf.timer     customs-use-ram-pf.service
 2026-04-24 03:00:00 KST  12h left    2026-04-23 03:00:00 KST  11h ago             customs-backup-etc.timer     customs-backup-etc.service
 2026-04-24 07:15:00 KST  16h left    2026-04-23 14:49:01 KST  9min ago            snap.certbot.renew.timer     snap.certbot.renew.service
 2026-04-24 09:20:14 KST  18h left    2026-04-23 09:20:14 KST  5h 38min ago        systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
n/a                          n/a         2026-03-15 09:06:35 KST  1 months 8 days ago systemd-readahead-done.timer systemd-readahead-done.service

5 timers listed.
Pass --all to see loaded but inactive timers, too.

# 특정 타이머 등록 현황 확인
~]# systemctl status customs-backup-etc.timer 
 customs-backup-etc.timer - Run daily /etc backup
   Loaded: loaded (/etc/systemd/system/customs-backup-etc.timer; enabled; vendor preset: disabled)
   Active: active (waiting) since 일 2026-03-15 09:04:55 KST; 1 months 8 days ago

 3월 15 09:04:55 server.gldigital systemd[1]: Started Run daily /etc backup.