내 tar 백업을 복구하는 방법

내 tar 백업을 복구하는 방법

저는 주로 NAS로 서버를 설정했습니다. Ubuntu Server 22.04 LTS를 실행하며 데이터는 하드웨어 제어 RAID에 저장됩니다.

분명히 오프사이트 저장을 위한 백업을 생성하고 \

tar -cvpzf \
  /backup/location/backup1.tar.gz \
  --exclude=/some/files/* \
  /source/directory/

문제 설명:
작은 데이터 세트로 테스트한 결과 성공적으로 백업되었습니다. 전체 드라이브를 시도한 후 백업 프로세스가 어느 시점에서 중지되고 손상된 tar 파일이 남게 되었습니다.

  • 실패 지점이 다른 파일에서 발생했습니다. 지금까지는 .iso 및 .exe 파일을 벗길 때 이런 일이 발생하는 것 같습니다.
  • 당시 아카이브 크기는 5.4GB였다.
  • tar -tf /backup/location/backup1.tar.gz반품:
gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

질문 0: 이 사용 사례에서 tar를 사용하시겠습니까?
...또는 완전히 다른 솔루션을 추천하시겠습니까?

질문 1: 아카이브가 손상된 이유는 무엇입니까?
지금까지 나는 이것이 아카이브 파일 유형이나 전체 크기와 관련이 있을 수 있다고 추측합니다. 그러나 나는 이것을 논의하는 스레드를 보지 못했습니다.

질문 2: 이 충돌을 피하는 방법은 무엇입니까?
질문 1에 이어, 백업 프로세스 중에 자동으로 무결성을 확인하여 충돌 없이 백업을 만들 수 있는 방법은 무엇입니까?

질문 3: 손상된 아카이브를 복구할 수 있습니까(마지막/손상된 파일 제외)?
백업이 손상된 후 백업을 다시 생성해야 하는 방법이 있습니까?

답변1

작은 데이터 세트로 테스트한 결과 성공적으로 백업되었습니다. 전체 드라이브를 시도한 후 백업 프로세스가 어느 시점에서 중지되고 손상된 tar 파일이 남게 되었습니다.

실패 원인을 조사해야 할 것입니다. 소스 파일을 읽으시겠습니까? 대상 파일에 쓰시겠습니까? 대상 파일 시스템이 꽉 찼기 때문인가요? 아니면 두 저장 장치 중 하나가 신뢰할 수 없기 때문입니까?

좋은 점은 tar가 매우 간단한 형식이라는 것입니다. 실제로는 파일 설명 헤더, 파일 콘텐츠, 512B의 다음 배수, 다음 파일 설명 헤더에 대한 패딩입니다.

그래서 제가 저장하려고 했던 마지막 것을 제외하고는 모두 완전히 괜찮았습니다.

나쁜 점은 tar가 매우 순진한 형식이라는 것입니다. 체크섬은 없고 파일 길이만 헤더에 저장되어 있으므로알다파일이 올바르게 작성되었는지 여부.

  • Q0: 개인적으로 마음에 들지 않습니다 tar. 여러 면에서 비효율적입니다. 저는 squashfs가 실제로 디렉토리를 포함하고 있기 때문에 선호합니다. 따라서 tar에서처럼 마지막 파일 이름이 무엇인지 알기 위해 모든 아카이브 파일을 읽을 필요가 없습니다. 또한 사후에 적용할 필요가 없는 압축 기능이 내장되어 있어 검색할 위치를 알기 위해 대용량 아카이브의 압축을 풀지 않고도 검색할 수 있다는 장점이 있습니다. 동일한 데이터는 한 번만 저장됩니다. 마지막으로, squashfs 아카이브를 추출할 필요 없이 파일 시스템으로 간단히 마운트할 수 있습니다. 더 사용자 친화적입니다.
    그러나 이는 실제로 매번 전체 콘텐츠를 아카이브로 아카이브하려고 한다고 가정합니다. 보통은 이런 걸 원하지 않으시겠지만,증분 백업. 사용하는 도구는 특정 사용 사례와 목표에 따라 다릅니다. btrfs의 내장 스냅샷 기능을 사용하는 솔루션에 연결하는 방법에 대해 실제로 많은 논의가 있습니다.증분 백업을 위한 Linux 백업 유틸리티
  • 질문 1: 우리는 정말 모르겠어요. "어느 시점에서 멈추다"는 설명이 충분하지 않습니다. 자세한 내용은 직접 조사해 보아야 합니다!
  • Q2: Q1을 참조하세요.
  • Q3: 수정할 사항이 없습니다. 마지막 파일까지(포함하지 않음) 아카이브가 완벽한 순서로 되어 있습니다. x아카이브에서 파일을 추출하기 만 하면 됩니다 .

그건 그렇고, 당신은 이미 최신 시스템을 가지고 있습니다. 사용할 때 -z압축을 사용하지 마십시오 tar. 이는 에서도 사용할 수 있는 gzip입니다 --zstd.

관련 정보