종료된 tar 명령을 복구하는 방법

종료된 tar 명령을 복구하는 방법

tar -cvf나는 그것을 죽이는 데 사용해야 하는 : 을 만들고 있습니다 ctrl-C. 나는 하나를 수행 Ctrl-Z한 다음 작업을 다시 전면으로 가져와야 한다는 것을 알고 있습니다 . 그러나 그것은 이야기가 아닙니다.

작업을 중단한 부분부터 계속할 수 있나요?

답변1

이 방법은 tar 아카이브를 다시 만들고 완성된 부분을 기존 파일에 추가합니다. 이는 네트워크 연결을 통해 백업하는 경우 유용합니다. INFILES의 데이터가 변경되면 아카이브가 손상될 수 있습니다. 완료되면 저장을 테스트하십시오.

다음 줄의 INFILES 및 OUTFILE을 올바른 이름으로 변경합니다.

INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"

설명하다:

SIZE="$(wc -c < $OUTFILE)"# 현재 아카이브의 크기를 가져옵니다.

tar -cz --to-stdout "$INFILES" |# 아카이브 생성을 시작하고 출력을 tail명령으로 보냅니다.

tail -c +$(($SIZE+1)) >># $SIZE+1 이전의 데이터는 무시하고 나머지 아카이브 파일 $OUTFILE을 복원합니다.

답변2

아카이브가 불완전한 경우 수행할 작업은 tar아카이브에 파일 목록을 생성하는 것입니다.

tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done

sed명령은 뒤에 슬래시가 있는 모든 줄을 제거합니다. 이는 파일이 아닌 디렉터리이며, 우리는 이 디렉터리를 다시 덤프하고 첫 번째 tar 아카이브에 이미 있는 디렉터리의 파일만 건너뛰기를 원합니다. 또한 sed마지막 파일 이름은 부분 덤프일 가능성이 높으므로 제거하므로 다시 보관할 것입니다.

그런 다음 -X 옵션을 통해 files-done목록을 새 명령에 전달하면 됩니다.tar

tar cfvX archive2.tar files-done SOURCEDIR

새 tar 명령에서 다른 출력 파일 이름을 사용해야 합니다. 그렇지 않으면 아카이브의 일부를 덮어쓰게 됩니다. 손상된 tar 아카이브에 직접 추가하려고 시도하지 마십시오.

답변3

가장 좋은 해결책은 tar 파일을 삭제하고 재부팅하는 것입니다 nohup. &또는 tar -tfvtar -cvf.

답변4

그럴 수 없습니다. 다시 시작하면 됩니다.

관련 정보