문서의 이전 판입니다!
- 준비 사항: /etc/fstab 확인, LFS 파티션 마운트, tar, pv, xz 설치 확인
export LFS=/mnt/lfs # LFS "/" 파티션 export LFS_DEPOT=/mnt/nfs/warehouse/lfs # 백업 파일이 저장될 위치 mountpoint -q $LFS || sudo mount $LFS # 마운트 상태 확인 필요시 마운트 mountpoint -q $LFS_DEPOT # 확인후 마운트 for prog in tar xz pv; do # tar, xz, pv 설치 확인 if command -v "$prog" >/dev/null 2>&1; then $prog --version | head -n 1 else echo "$prog is missing" fi done - Backup
cd $LFS tar -cp --numeric-owner \ --exclude='proc' --exclude='sys' --exclude='dev' --exclude='run' . | \ xz -9 --threads=$(nproc) --memory=80% -vv > "${LFS_DEPOT}/lfs+blfs-12.4.tar.xz" - Restore
export LFS=/mnt/lfs # LFS "/" 파티션 export WAREHOUSE=/mnt/nfs/warehouse/lfs # 백업 파일 위치 cd $LFS sudo tar -xpvJf ${WAREHOUSE}/lfs+blfs-12.4.tar.xz --numeric-owner . sudo mkdir -pv {dev,proc,sys,run}- /etc/fstab 확인
정리 필요
복구이후 tar의 검증 기능을 이용한 확인방법
# 1. 전체 파일 개수 파악 (문자열 -> 숫자 처리)
TOTAL_FILES=$(tar -tvf "$TAR_FILE" | wc -l | awk '{print $1}')
# 2. 1% 진행률을 위한 인터벌 역산 (정수 나눗셈)
# 파일이 100개 미만일 경우를 대비해 최소값 1 설정
INTERVAL=$(( TOTAL_FILES / 100 ))
if [ "$INTERVAL" -le 0 ]; then INTERVAL=1; fi
# 3. 사용자에게 정보 출력
echo "검증 대상: $TOTAL_FILES 파일 (1% 진행당 $INTERVAL 파일 처리)"
# 4. 검증 실행 (pv -s 100으로 백분율 동기화)
# tar가 INTERVAL만큼 처리할 때마다 점(.)을 찍고, pv가 이를 100개까지 카운트
tar -df "$TAR_FILE" --checkpoint=$INTERVAL --checkpoint-action=dot | \
pv -p -l -s 100 > /dev/null
echo "무결성 검증이 완료되었습니다."
tar 검증 과장에 예상 시간 추가 (위의 내용에 통합 필요)
# 1. 실제 대상 디렉터리($LFS)에 테스트 공간 확보
TEST_DIR="${LFS}/.bench_tmp"
mkdir -p "$TEST_DIR"
# 2. 실제 디스크에 쓰기 (I/O 쓰기 속도 포함)
dd if=/dev/zero of="${TEST_DIR}/bench_file" bs=1M count=100 conv=fdatasync 2>/dev/null
# 3. 압축/풀기 테스트 (실제 디스크에서 읽기 + CPU 압축 + 디스크 쓰기)
START_TIME=$(date +%s.%N)
xz -9 --threads=$(nproc) "${TEST_DIR}/bench_file"
END_TIME=$(date +%s.%N)
# 4. 결과 계산 및 정리 (테스트 파일 삭제 필수)
SEC_PER_100MB=$(echo "$END_TIME - $START_TIME" | bc)
rm -rf "$TEST_DIR"
설정, 로직 , 함수 분리후 prefix_ 로 구분