Extrat tar "열 수 없음: 파일 이름이 너무 깁니다"

Extrat tar "열 수 없음: 파일 이름이 너무 깁니다"

원격 시스템의 디렉토리를 사용하여 tar 파일을 만들었습니다.

tar -czvf

압축을 풀고 싶은 로컬 컴퓨터로 scp합니다.

tar -xzvf

하지만 나는 다음을 얻습니다.Cannot open: File name too long

내 lubuntu 12.04 로컬 머신에는 다음이 있습니다 tar (GNU tar) 1.26.

이제 원격 시스템에 액세스할 수 없습니다. 필요한 경우 버전을 확인하겠습니다.

특히 원격 시스템이 오프라인이기 때문에 새로운 tar를 만들지 않고 추출하고 싶습니다.

그런데 이름이 길더라도 제대로 된 아카이브를 만드는 방법을 알고 계시다면 수락하겠습니다.

답변1

tar파일 이름을 256바이트(GNU 확장자 포함)로 제한하세요. Linux 파일 시스템은 파일 이름당 최소 256바이트를 지원합니다. 이는 압축된 파일을 tar오류 없이 추출할 수 있음을 의미합니다. 그래서 저는 두 가지 이유가 있다고 생각합니다.

  1. 타르볼이 손상되었습니다. 다음을 통해 확인하십시오.

    $ tar -tvf tarball.tar
    

    어떤 경우에는 몇 가지 오류가 표시됩니다.

  2. "가상" 파일 시스템을 사용합니다.퓨즈 압축또는암호화된 파일 시스템(선택적 파일 압축/암호화 사용) 파일 이름이 약간 짧거나 파일 시스템 제한과 같습니다. 트릭은 예를 들어 퓨즈 압축을 사용하여 디렉토리를 마운트하고 파일 이름을 생성할 때 foo.bar가상 파일 시스템이 이름이 지정된 파일을 생성 foo.bar.gz하고 투명하게 압축하지만 실제 파일 이름은 숨긴다는 것입니다. 이름 길이가 254바이트인 파일을 생성하면 파일에 접미사를 추가하려고 하기 때문에 오류가 발생합니다.

    이 경우 가상 파일 시스템 외부에서 tarball을 추출하면 도움이 됩니다.

    $ sudo mkdir /home/${USER}-temp
    $ sudo chown $USER /home/${USER}-temp
    $ tar -xvf tarball.tar -C /home/${USER}-temp
    

어쨌든 자세한 내용을 보려면 추적해 보세요.

$ strace -o tar-strace.log tar -tf tarball.tar
$ ltrace -o tar-ltrace.log tar -tf tarball.tar

답변2

이것이 파일 저장에 대한 해결 방법입니다. tar를 추출할 때 다음 옵션을 추가하십시오.

  • --xform'을 사용하세요./sed/표현/' 긴 이름을 줄여서 표현합니다.
  • -T를 사용하세요.파일 이름 목록모든 아카이브 대신 문제가 있는 파일만 추출합니다.

예:

긴 파일 이름을 /tmp/missing.txt에 넣는 것부터 시작하세요.

tar -x -T /tmp/missing.txt --xform 's/Beethoven-.*\.flac/B.flac/g' -f backup/home.tar

내 경우에는 문제의 모든 파일에 메타 정보가 포함된 트랙 번호가 매겨져 있으므로 일부 이름을 잘라내는 것은 문제가 되지 않는 것 같습니다. 원본 파일 이름을 복원하는 방법을 찾아야 할 수도 있습니다.

관련 정보