업데이트된 타르볼에서 오래된 파일을 추출/삭제하는 방법

업데이트된 타르볼에서 오래된 파일을 추출/삭제하는 방법

tarball이름이 있습니다 test.tar. 먼저 다음을 실행하여 이름을 만듭니다.

echo start > 1
tar -cf test.tar 1

그런 다음 업데이트하세요.

echo end > 1
tar -uf test.tar 1

이제 이 tar 아카이브의 파일 목록을 얻으면 다음과 같습니다.

$ tar -tx test.tar

그것은 나에게 다음을 제공합니다:

1
1

이 파일의 내용을 보려고 하면:

$ tar -xOf test.tar

start
end

마지막으로 추출하고 싶을 때 :

$ tar -xf test.tar 1
$ cat 1
end

이전 버전을 추출하는 방법이 있나요 1? (포함된 것 start).

또 다른 것은 이 파일을 삭제하는 것입니다. 매개변수를 사용하면 --delete아카이브에서 해당 이름을 가진 모든 파일이 삭제됩니다. 기존 것만 삭제하거나 새 것만 삭제하려면 어떻게 해야 하나요?

답변1

~에서여기:

--occurrence[=number]

--delete이 옵션은 > 하위 명령 중 하나 와 함께 사용하거나 --diff명령 줄이나 옵션을 통해 파일 목록이 제공될 때 사용할 수 있습니다 .--extract--list-T

이 옵션은 tar가 명명된 각 파일의 첫 번째 항목만 처리하도록 지시합니다. 숫자의 기본값은 1이므로

tar -x -f archive.tar --occurrence filename

archive.tar' 멤버의 첫 번째 발생이 filename' from >추출되고 아카이브 끝까지 스캔하지 않고 종료됩니다.

따라서 귀하의 경우 이전 버전을 추출하려면 다음을 사용하십시오.

tar -xf test.tar --occurrence=1 1

삭제하려면 다음을 실행하세요.

tar --delete -f test.tar --occurrence=1 1

두 버전을 모두 추출하는 또 다른 해결 방법은 간단히 --backup스위치를 사용하는 것입니다.

tar -xf test.tar --backup

다음과 같은 파일을 추출합니다.

1
1~

이것은 1~오래되었습니다. 버전이 세 개 이상인 경우 --occurrence대신 스위치를 사용하세요.

-w대화형 모드를 사용할 수도 있습니다 tar.

tar -xf test.tar -w

이번에는 tar각 작업에 대한 메시지가 표시되며 추출하려는 첫 번째 또는 마지막 버전을 선택할 수 있습니다 y/n.

관련 정보