Tutoriel Linux

Restic : 현재 버전을 덮어쓰지 않고 파일 복원

Débutant2 min de lecture

삭제되거나 너무 빨리 교체된 구성 파일은 서비스를 잘못된 상태로 만들 수 있습니다. Restic을 사용할 때의 함정은 활성 경로에 직접 복원하는 것입니다. 먼저 테스트 디렉토리에서 파일을 복원한 다음, 복사하기 전에 비교하십시오.

이 방법은 이미 초기화되고 일반적인 자격 증명으로 액세스할 수 있는 저장소에서 시작됩니다. 특정 파일을 대상으로 하고, 예를 들어 /etc/mon-service/config.ini와 같이 설정하며, 제어가 완료될 때까지 현재 사용 중인 버전은 그대로 둡니다.

안전한 아카이브에서 분리된 테스트 디렉토리로 복원된 파일
분리된 디렉토리에서 복원하여 활성 버전을 수정하기 전에 파일을 비교할 수 있습니다.

스냅샷과 복원할 경로 식별하기

저장소를 일반적인 변수나 환경 파일로 정의하십시오. Bash 기록에 저장소 비밀번호를 붙여넣지 마십시오. Restic 서비스가 이미 스크립트나 systemd 유닛에서 실행 중이라면 복원을 위해 새로운 인증 메커니즘을 만들기보다는 기존 메커니즘을 사용하십시오.

먼저 찾고자 하는 경로가 포함된 스냅샷을 나열하십시오:

export RESTIC_REPOSITORY=/srv/restic-repo
restic snapshots --path /etc/mon-service/config.ini

출력에는 식별자, 날짜, 호스트 및 저장된 경로가 표시됩니다. 여러 기계나 여러 백업에 이 파일이 포함될 수 있으므로 latest 대신 정확한 식별자를 선택하십시오. 이 예제에서는 8f3a1c2d를 선택한 식별자로 교체하십시오.

SNAPSHOT=8f3a1c2d
restic ls "$SNAPSHOT" --path /etc/mon-service/config.ini

restic ls는 어떤 것도 쓰기 전에 아카이브에 존재하는 경로를 확인합니다. 결과가 없으면 그만두십시오. 잘못 입력된 경로나 사고 이후에 찍힌 스냅샷은 두 번째 복원으로 수정되지 않습니다.

테스트 디렉토리에 복원하기

검사를 위해 전용 디렉토리를 만드십시오. 이를 생산 마운트 지점이나 해당 서비스의 폴더로 설정해서는 안 됩니다:

sudo install -d -m 0700 /srv/restore-restic-test
restic restore "$SNAPSHOT" 
  --target /srv/restore-restic-test 
  --include /etc/mon-service/config.ini

Restic은 대상 아래에 트리를 재생성합니다. 따라서 복원된 파일은 다음 위치에 있습니다:

/srv/restore-restic-test/etc/mon-service/config.ini

이 분리된 디렉토리는 테스트 중에 /etc/mon-service/config.ini를 덮어쓰는 것을 방지합니다. 이는 서비스 파일, 구성 키 또는 내보낸 데이터베이스의 경우 유지해야 할 선택입니다. 루트에 직접 복원하는 것은 스냅샷 오류를 생산 사고로 전환합니다.

서비스에 복원하기 전에 파일 비교하기

먼저 권한, 크기 및 차이를 확인하십시오. diff 명령은 어떤 파일도 수정하지 않습니다:

sudo stat /etc/mon-service/config.ini
sudo stat /srv/restore-restic-test/etc/mon-service/config.ini
sudo diff -u 
  /etc/mon-service/config.ini 
  /srv/restore-restic-test/etc/mon-service/config.ini

출력 없이 diff가 0을 반환합니다: 두 내용이 동일합니다. 삭제 및 추가된 줄이 표시되면 결정을 내리기 전에 이를 확인하십시오. 오래된 주소, 포트 또는 만료된 비밀번호가 파일 변경의 정확한 이유일 수 있습니다.

복원된 사본이 올바른 경우 활성 버전을 먼저 백업한 다음 짧은 유지 관리 시간 내에 교체하십시오. 그 후, systemctl status mon-service 및 관련 로그와 같은 적절한 명령으로 구문 및 서비스 상태를 확인하십시오.

복원 검사는 백업만큼 신중을 기할 가치가 있습니다. BorgBackup 가이드도 프로덕션 외부에서 추출하는 동일한 논리를 적용합니다. Restic을 시작하기 전에 경로를 찾으려면 Linux에서 find 명령이 잘못된 위치에 동명이의 파일을 복원하는 것을 피합니다.

단일 파일을 복원하지 말아야 할 때

구성 파일이 삭제되거나 덮어쓰기된 경우 단일 파일로 충분합니다. 그러나 상태를 데이터베이스, 파일 및 트랜잭션 로그 간에 분산하는 애플리케이션의 경우에는 항상 충분하지 않습니다. 이 경우, VM이나 격리된 디렉토리에 일관된 집합을 복원한 다음, 서비스가 중지되거나 테스트 사본을 사용하여 절차를 검증하십시오.

Restic의 복원 문서는 스냅샷, 경로 및 대상 디렉토리별 타겟팅을 설명합니다. 최종 검증이 완료될 때까지 테스트 디렉토리를 유지하십시오. 검증 후 삭제는 Restic 저장소나 활성 파일에 영향을 미치지 않습니다.

sudo apt update && sudo apt upgrade