linuxfromscratch:12.4:linux_from_scratch:backup_and_restore

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
linuxfromscratch:12.4:linux_from_scratch:backup_and_restore [2026/03/02 00:21] – 만듦 baecylinuxfromscratch:12.4:linux_from_scratch:backup_and_restore [2026/03/02 03:05] (현재) baecy
줄 10: 줄 10:
 </WRAP> </WRAP>
 </WRAP> </WRAP>
-  - 준비 사항: /etc/fstab 확인, LFS 파티션 마운트, tar, pv, xz 설치 확인 +  - 준비 사항: /etc/fstab 확인, LFS 파티션 마운트, tar, pv, xz 설치 확인 \\ <codeprism lang=bash>
-<codeprism lang=bash>+
 export LFS=/mnt/lfs                                # LFS "/" 파티션 export LFS=/mnt/lfs                                # LFS "/" 파티션
-export WAREHOUSE=/mnt/nfs/warehouse/lfs            # 백업 파일이 저장될 위치 +export LFS_DEPOT=/mnt/nfs/warehouse/lfs            # 백업 파일이 저장될 위치
-grep $LFS /etc/fstab                               # /etc/fstab에 $LFS 디렉터리 설정 확인+
 mountpoint -q $LFS || sudo mount $LFS              # 마운트 상태 확인 필요시 마운트 mountpoint -q $LFS || sudo mount $LFS              # 마운트 상태 확인 필요시 마운트
 +mountpoint -q $LFS_DEPOT                           # 확인후 마운트
 for prog in tar xz pv; do                          # tar, xz, pv 설치 확인 for prog in tar xz pv; do                          # tar, xz, pv 설치 확인
-    if command -v "$prog" >/dev/null 2>&1; thne+    if command -v "$prog" >/dev/null 2>&1; then
         $prog --version | head -n 1         $prog --version | head -n 1
     else     else
줄 24: 줄 23:
 done done
 </codeprism> </codeprism>
-  - Backup  +  - Backup \\ <codeprism lang=bash>
-<codeprism lang=bash>+
 cd $LFS cd $LFS
 +sudo -s
 tar -cp --numeric-owner \ tar -cp --numeric-owner \
     --exclude='proc' --exclude='sys' --exclude='dev' --exclude='run' . | \     --exclude='proc' --exclude='sys' --exclude='dev' --exclude='run' . | \
-    xz -9 --threads=$(nproc) --memory=80% -vv > "${WAREHOUSE}/lfs+blfs-12.4.tar.xz"+    xz -9 --threads=$(nproc) --memory=80% -vv > "${LFS_DEPOT}/lfs+blfs-12.4.tar.xz"
 </codeprism> </codeprism>
- +  - Restore \\ <codeprism lang=bash>
-  - Restore +
-<codeprism lang=bash>+
 export LFS=/mnt/lfs                                # LFS "/" 파티션 export LFS=/mnt/lfs                                # LFS "/" 파티션
 export WAREHOUSE=/mnt/nfs/warehouse/lfs            # 백업 파일 위치 export WAREHOUSE=/mnt/nfs/warehouse/lfs            # 백업 파일 위치
 cd $LFS cd $LFS
 sudo tar -xpvJf ${WAREHOUSE}/lfs+blfs-12.4.tar.xz --numeric-owner . sudo tar -xpvJf ${WAREHOUSE}/lfs+blfs-12.4.tar.xz --numeric-owner .
-sudo mkdir -pv {dev,pro,sys,run}+sudo mkdir -pv {dev,proc,sys,run}
 </codeprism> </codeprism>
     - /etc/fstab 확인     - /etc/fstab 확인
 +
 +=== 정리 필요 ===
 +복구이후 tar의 검증 기능을 이용한 확인방법
 +<codeprism lang=bash>
 +# 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 "무결성 검증이 완료되었습니다."
 +</codeprism>
 +tar 검증 과장에 예상 시간 추가 (위의 내용에 통합 필요)
 +<codeprism lang=bash>
 +# 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"
 +</codeprism>
 +설정, 로직 , 함수 분리후 prefix_ 로 구분
 <WRAP group> <WRAP group>
 ----- -----
 </WRAP> </WRAP>
  
  • linuxfromscratch/12.4/linux_from_scratch/backup_and_restore.1772410891.txt.gz
  • 마지막으로 수정됨: 2026/03/02 00:21
  • 저자 baecy