t.tar.gz
다음 파일을 포함하는 tarball(가령)이 있습니다.
./a/a.txt
./b/b.txt
에 대한 하드 링크는 어디에 ./b/b.txt
있습니까 ./a/a.txt
?
동일한 디렉토리의 하드 링크만 지원하는 네트워크 파일 시스템(AFS)에서 tarball의 압축을 풀고 싶습니다(참조:여기). 따라서 압축을 풀면 tar -xzf t.tar.gz
하드링크를 생성할 수 없다는 오류가 발생합니다../b/b.txt
지금까지 이 문제에 대한 나의 해결책은 ./t.tar.gz
일반 하드 링크를 지원하는 파일 시스템에서 압축을 푸는 것입니다. 그런 다음 다시 패키지하십시오. 옵션 은 다음 --hard-dereference
과 같습니다.GNU tar 매뉴얼제안. 마지막으로 새 tarball을 AFS로 추출합니다.
이것이 저와 잘 맞지 않기 때문에 아카이브의 내용을 최종 목적지에 직접 압축을 풀 수 있는 더 쉬운 방법이 있는지 묻고 싶습니다. 예를 들어 --hard-dereference
보관하는 대신 압축을 푸는 것과 동등한 옵션이 있습니까?
답변1
아카이브를 디렉터리로 마운트합니다.AVFS을 선택한 다음 즐겨 사용하는 파일 복사 도구를 사용하세요.
mountavfs
cp -a --no-preserve=links ~/.avfs/path/to/t.tar.gz\# target-directory/
또는
mountavfs
rsync -a ~/.avfs/path/to/t.tar.gz\#/ target-directory/