보그 추출을 원격으로 실행

보그 추출을 원격으로 실행

/mnt/backup에 있는 원격 저장소의 백업을 고려하십시오 server.

Borg 사용자가 아닌 경우 저장소는 여러 아카이브로 구성됩니다. 백업이 수행될 때마다 아카이브가 생성됩니다. 이제 특정 아카이브를 추출하고 싶다고 가정해 보겠습니다. 단순화를 위해 최신 아카이브를 추출합니다.

현재 내가 하는 방법은 원격 저장소에서 아카이브 목록을 가져온 다음 해당 이름을 배열에 저장하는 것입니다 mailarchives. 다음과 같이 보입니다:

mapfile -t mailarchives < <(borg list --short 'faheem@server:/mnt/backup')  

그런 다음 (최신 아카이브)에서 모든 파일을 추출하여 mailarchive[-1]아카이브가 유효하고 아카이브에서 복원할 수 있는지 확인했습니다. 다음과 같이 보입니다:

borg extract -n 'faheem@server:/mnt/backup'::"${mailarchives[-1]}"

그러나 이는 모든 것을 로컬로 복사하기 위해 많은 데이터를 사용합니다. 따라서 내 질문은 이 모든 작업을 원격으로 수행하고 결과(성공 또는 실패 여부)만 로컬로 전송할 수 있는지 여부입니다 ssh. 나는 이것이 가능해야 한다고 생각하지만, 정확히 어떻게 되는지는 모르겠습니다.

더 간단한 예는 다음과 같습니다.

borg check faheem@server:/mnt/backup

또한 어떤 이유로든 많은 데이터를 소비합니다.

게다가 겉보기에도 불구하고 이 질문은 실제로 Borgbackup에만 국한된 것이 아닙니다. 보다 일반적으로 말하면, 원격 컴퓨터에서 검사를 실행하고 싶지만 일반적으로 로컬로 많은 데이터를 다운로드해야 하는 경우 이 검사를 원격으로 실행할 수 있습니까? 성공 또는 실패 결과를 로컬로 전달하기만 하시겠습니까?

마지막으로 Borg의 메인/리드 개발자가 남긴 메모입니다.

ThomasWaldmann> faheem: borg는 성공 시 0, 경고 시 1, 오류 시 2를 반환합니다.

답변1

실제 대답은 백업을 "확인"하는 방법과 백업 도구의 확인 수행 기능에 따라 달라집니다.

나는 당신이 borg이것을 사용하고 있다고 가정하고 borg check있으며 그것은 당신에게 충분합니다. 특정 백업 확인 요구 사항이 다른 경우 질문을 수정하세요.

원격으로 실행 borg:

원격으로 실행할 수 있으려면 borg check1) 원격 서버에서 명령을 실행할 수 있어야 하고, 2) borg해당 명령이 원격 서버에 설치되어 있어야 합니다. 이는 아마도 가장 일반적인 설정일 것이지만 대안도 사용할 수 있습니다(저장소는 로컬로 마운트된 원격 볼륨에 있을 수 있습니다. 예를 들어 다음을 sshfs사용) .

저장소가 다음과 같은 경우암호화되지 않음다음 명령을 사용하여 확인할 수 있습니다.

$ ssh user@host 'borg --show-rc check /path/to/repo'

borg로컬 컴퓨터가 아닌 원격 서버에서 실행됩니다. 이 --show-rc옵션은 borg종료 코드를 출력하며 로컬 콘솔에 표시됩니다(표준 출력이 리디렉션됨). 추가 정보를 얻으려면 옵션을 --verbose추가 할 수 있습니다 . 저장소에서 모든 데이터를 추출하고 압축을 풀고 원격으로 검사하는 옵션을 추가할 수도 있습니다 .--progress
--verify-data

borg check user@server:/path/to/repo/로컬로 실행 하면 --verify-data이 옵션이 없어도 리포지토리의 모든 압축 데이터가 원격에서 로컬로 전송됩니다.

borg문서가 기본적으로 로컬로 실행되는 이유는 borg아마도 권장 구성에 암호화가 포함되어 있고 보안상의 이유로 암호화/암호 해독은 로컬에서만 수행되어야 하기 때문일 것입니다.

저장소가 다음과 같은 경우암호화됨:

  • 당신이 선택한다면키 파일 암호화, 원격 프로세스에 키 파일을 제공해야 합니다. 이는 일반적 ~/.config/borg/keys/key_name으로 원격 서버의 동일한 경로에 복사하는 것을 의미합니다 (대안은 공식 문서 참조).
  • 당신이 선택한다면다시 암호화, 원격 프로세스에서 비밀번호를 요청해야 합니다.

원격 프로세스가 비밀번호를 묻게 하려면 원격 서버에 의사 터미널을 할당하는 옵션 호출을 ssh사용해야 합니다.-t

$ ssh -t user@host 'borg --show-rc check /path/to/repo'

중요한 보안 고려 사항:

암호화된 저장소는 부분적으로 신뢰할 수 있는 서버, 즉 데이터가 삭제되거나 손실되지 않도록 충분히 신뢰하지만 실제로 데이터를 보고 싶지 않은 서버를 사용할 수 있습니다.

원격 서버를 완전히 신뢰하지 않는다면 암호화 키 및/또는 비밀번호를 제공하고 싶지 않을 것입니다. 이렇게 하면 아카이브와 데이터를 원격으로 검사할 수 없습니다.
저장소는 암호 해독 없이만 확인할 수 있습니다. borg check --repository-only이는 호출하는 경우 발생합니다. 데이터 블록은 확인되지 않습니다. 자세한 내용은 온라인 설명서를 참조하세요.

답변2

borg check이것이 원하는 경우 server대용량 데이터 전송을 피하기 위해 직접 실행할 수 있습니까? 아마도 나는 당신이 달성하려는 것이 무엇인지 혼란스러워 할 것입니다. 다음과 같습니다.

ssh faheem@server
screen # so you can resume after disconnect (optional)
borg check /mnt/backup

반면에 파일이 괜찮다는 Borg의 주장을 신뢰하는 대신 실제로 파일을 직접 확인하려는 경우 다음을 수행할 수 있습니다.

  • SSH를 통해 서버로
  • 서버의 임시 디렉터리에 아카이브의 압축을 푼다(따라서 서버 저장소는 사용하지만 데이터 업로드/다운로드는 사용하지 않음).
  • hashdeep각 파일의 해시 계산과 같은 도구를 사용하십시오.
  • 서버의 임시 디렉터리 삭제
  • 해시 파일 다운로드
  • 해시값을 실제 파일과 비교

내 제안이 거리가 멀다면, 당신이 원하는 것이 무엇인지 나에게 더 잘 설명해 줄 수 있을 것입니다.

관련 정보