tar 폴더에 있는 모든 파일 목록을 가져와서 파일을 다운로드할 수 있는 링크가 포함된 페이지에 모두 표시하려고 합니다. 개별 파일을 클릭하면 다운로드됩니다. 하드 링크된 파일을 제외하고는 모두 잘 작동합니다.
단일 파일을 추출하는 데 사용하는 명령은 다음과 같습니다.
tar --extract --file=abc.tar.xz abc.file
하지만 파일이 하드 링크라면 오류가 발생합니다. 하드 링크 파일을 얻을 수 있는 방법이 있습니까?
답변1
문제는 tar가 파일을 저장하는 방법입니다. 예를 들어
$ echo hello > a
$ ln a b
$ tar cf foo.tar a b
$ tar tf foo.tar
a
b
하나의 파일만 추출하려고 하면 문제가 발생합니다
$ mkdir Y
$ cd Y
$ tar xvf ../foo.tar b
b
tar: b: Cannot hard link to `a': No such file or directory
tar: Exiting with failure status due to previous errors
당신이해야 할 일은 자세한 콘텐츠 목록 표시를 보는 것입니다
$ tar tvf foo.tar
-rw-r--r-- sweh/sweh 6 2016-06-13 10:43 a
hrw-r--r-- sweh/sweh 0 2016-06-13 10:43 b link to a
이제 "b"의 길이가 0이고 "h"(첫 번째 문자) 유형이며 "linked to"로 표시되어 있음을 알 수 있습니다. 그러면 추출해야 하는 실제 파일이 무엇인지 알려줍니다.
tar Oxvf ../foo.tar a > b
이 경우 "O" 옵션(stdout으로 보내기)을 사용하여 올바른 이름의 파일을 생성 할 수 있습니다 .