이름이 너무 길고 용량을 초과하는 파일을 복사하려면 쉘 스크립트가 필요합니다.

이름이 너무 길고 용량을 초과하는 파일을 복사하려면 쉘 스크립트가 필요합니다.

NTFS 파일 시스템에 짧은 이름과 긴 이름의 파일이 포함된 디렉터리가 있습니다. 복사 명령을 입력하여 해당 디렉터리를 Ext2 파일 시스템에 복사했는데, 짧은 이름의 파일은 문제 없이 복사되지만 긴 이름의 파일은 실패합니다. 이러한 파일 수가 너무 커서 문제를 두 단계로 해결하려면 쉘 스크립트가 필요하기 때문에 "파일 이름이 너무 김" 오류가 발생합니다.

1- 디렉터리를 복사한 다음 짧은 이름으로 복사된 파일을 삭제합니다(이동 명령으로 이 작업을 수행할 수 있다는 것을 알고 있지만 복사 명령을 사용하고 싶습니다).

2- 이름이 긴 나머지 파일의 이름 끝에서 15~20자를 제거한 후 모든 파일이 복사될 때까지 이 단계를 반복합니다.

감사해요.

답변1

파일 이름을 동적으로 복사하고 자르려면 다음을 수행할 수 있습니다.

cd /src &&
LC_ALL=C pax -rws'|\([^/]\{255\}\)[^/]*|\1|g' ./* /dst/

경로 구성 요소를 255바이트로 자릅니다.

파일 이름에 멀티바이트 문자가 있으면 문자 중간에서 파일 이름이 잘릴 수 있습니다.

또한 심볼릭 링크의 대상도 업데이트합니다(비록 ntfs가 심볼릭 링크를 지원하는지 확실하지 않지만).

여러 파일의 처음 255바이트가 동일한 경우 파일이 서로 덮어쓰게 될 수 있습니다.

관련 정보