TCP-80.NET..
리눅스 자동백업 스크립트
2021년 12월 23일

1. /home 하위의 디렉토리들을 개별적으로 1일 1회씩 최대 3세대분 보관하는 스크립트.
2. 백업된 데이터의 저장위치는 /BACKUP/home/백업날짜
3. 아래 스크립트를 /BACKUP/scripts/backup_home.sh 로 저장
4. chmod 700 /BACKUP/scripts/backup_home.sh

#!/bin/sh
TARGET=`ls /home`;
BACKUP_DIR=/BACKUP/home/$(date +%Y%m%d)

mkdir -p $BACKUP_DIR
for USER in $TARGET do
NOW=$(date +%Y%m%d%H%M)
cd /home/$USER
find . -depth -print | cpio -o > $BACKUP_DIR/$USER\_$NOW.cpio
cd $BACKUP_DIR
gzip $USER\_$NOW.cpio
done

5. vim /etc/crontab 하여 아래 내용 추가. (매일 새벽 5시정각에 백업이 실행됨)

00 5 * * * root /BACKUP/scripts/backup_home.sh > /dev/null 2>&1

6. 오래된 데이터 삭제를 위하여 아래 내용을 /etc/crontab 에 추가. (7일 이상된 백업데이터를 자동으로 삭제)

30 5 * * * root find /BACKUP/home -type d -ctime +7 -exec rm -rf {} \; > /dev/null 2>&1

6. 백업 복원 방법

cd /BACKUP/home/{복원하고자 하는 시점}
zcat 백업파일이름 | cpio -idmv

# 복원 예제

zcat tcp80_202112170508.cpio.gz | cpio -idmv