아카이브 이름과 디렉터리 이름을 사용하여 아카이브의 모든 파일을 해당 디렉터리에 덤프하는 unarchiver가 있습니다. 다른 명령줄 옵션은 없습니다. 그런데 누군가 압축을 풀고 싶은 아카이브의 파일을 압축했는데 파일 이름에 500자 정도가 있었는데 이제 해당 파일을 발견하면 프로그램이 실패합니다(실제로 모든 파일 시스템은 256자 제한이 있습니다). 소스 코드를 변경하고 아카이브 취소 파일을 다시 컴파일하는 것 외에 어떤 옵션이 있습니까?
unarchiver가 쓰고 있는 파일을 가져와서 다른 곳에 덤프하는 디렉토리로 뭔가를 마운트해야 합니다. 어쩌면 하나의 큰 파일로 저장할 수도 있습니다. 일부 쓰기가 실패하더라도 이 작업은 실패 메시지를 보내서는 안 됩니다.
디렉터리를 파일로 마운트하려고 시도했지만 디렉터리에는 기본 파일 시스템이 있어야 하며 원래 FS와 동일한 제한 사항이 있습니다.
또한 파이프를 사용해 보았지만 파이프 뒤에 매개변수가 있을 수 없습니다(예 /pipe/reallylongfilename
: ). 그런 일이 가능합니까?
아카이브는 .zim
.OpenZim zimdump
라이브러리의 도구를 사용하고 있습니다.
답변1
긴 이름을 알고 있다면 16진수 편집기(또는?)를 사용하여 아카이브에서 편집해 볼 수 있습니다 sed
. 처음부터 시작해야 하는 경우 복사본을 사용하세요.
예제 파일의 이름을 합리적인 very-long-filename
공격 각도로 지정합니다.
very/long/filename
,very//////filename
,very0long-filename
0
NULL 문자(0x00
) 를 나타내는 것은very00000000000000
(0
위와 같이).
일반적으로 문자를 제거하여 아카이브를 더 작게 만드는 것은 현명하지 않습니다. 아카이브 내의 중요한 오프셋을 변경하여 손상시킬 수 있습니다.
파일로 테스트를 해봤습니다 .zip
. 나는 very-long-filename
시간이 너무 길지 않았다는 것을 인정합니다 . 나는 그것을 더 짧게 만들었습니다. 아마도 이 방법도 효과가 있을 것입니다.예너무 오래. 테스트에서 편집해야 했습니다.두 개의 조각.zip
각 파일 이름이 저장 되므로 파일 수두 배.
"압축"이라는 단어를 사용했지만 아카이브가 무엇인지 지정하지 않았습니다. 그것이 무엇이든, 파일 이름을 일반 텍스트로 저장하고 성공적으로 편집할 수 있기를 바랍니다. 행운을 빌어요.