![USB 드라이브에 복사하면 파일 이름이 변경됩니다.](https://linux55.com/image/90277/USB%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C%EC%97%90%20%EB%B3%B5%EC%82%AC%ED%95%98%EB%A9%B4%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%9D%B4%20%EB%B3%80%EA%B2%BD%EB%90%A9%EB%8B%88%EB%8B%A4..png)
데이터를 USB 스틱에 복사하는 bash 스크립트가 있습니다. 효과가있다. 데이터는 잘 복사되지만 파일 이름은 항상 변경됩니다. 이전과 동일하지만 더 긴 이름은 8자로만 줄어들고 확장자는 3자만 됩니다(총 최대 11자).
따라서 "willGetCutShorter.html"이라는 원본 파일은 드라이브에서 "willGetS.htm"이 되고 "small.txt"는 변경되지 않은 상태로 유지됩니다. 복사된 디렉터리 이름은 같은 방식으로 잘려지며 모두 8자 길이로 나타납니다(물론 확장자는 없습니다).
나는 이런 일이 일어나는 것을 원하지 않습니다. 파일 및 디렉터리 이름이 전혀 수정되지 않기를 바랍니다. 왜 이런 일이 발생하는지 모르겠습니다.
내 bash 스크립트에서는 모든 컴퓨터 디렉터리 내용을 나타내기 위해 별표를 사용하여 컴퓨터 디렉터리의 모든 내용을 드라이브에 복사합니다. 이것이 이유인지 궁금합니다. 아마도 cp는 파일 이름의 일부만 얻을 수 있을까요?
또한 Linux에서는 파일이 모두 소문자로 표시되며 처음에는 부분적으로 대문자인 파일도 표시됩니다. 그러나 Windows에서는 모든 파일과 폴더가 대문자로 표시됩니다.
왜?
편집 #1
이런 방식으로 USB 드라이브를 사용하기 전에 Windows 7 시스템에서 USB 드라이브를 포맷했습니다. 내 /etc/fstab
파일에 드라이브 항목을 추가하여 msdos로 마운트했습니다. 이는 매뉴얼 페이지(아마도 "man mount")를 읽었으며 드라이브 형식(FAT32)이 msdos에 의해 무시된다고 나와 있기 때문입니다.
파일 시스템 유형으로 FAT32를 사용하여 설치하고 싶지만 설치 매뉴얼 페이지에 해당 옵션이 표시되지 않습니다. fstab 항목은 mount 명령에 다음 항목만 포함되어 있음을 의미합니다.
sudo mount /mnt/
Bash 스크립트의 복사 명령은 다음과 같습니다.
cp -f -r /path/to/dir/* /mnt/to/dir/
드라이브를 다른 것으로 다시 포맷해야 하는 것 같나요? 아니면 약간 다른 방식으로 마운트해야 할까요?
답변1
다음과 같은 설치 명령을 사용하고 있다고 생각됩니다.
mount -t msdos /dev/XYZ /mnt/test
이렇게 하면 파티션이 8.3 파일 이름 규칙을 사용하는 이전 DOS FAT 파일 시스템에 강제로 마운트됩니다(참조:https://en.wikipedia.org/wiki/8.3_filename) 대신 vfat(긴 파일 이름을 사용함)https://en.wikipedia.org/wiki/Long_filename).
다음 옵션 중 하나를 사용하여 설치하는 것이 좋습니다.
mount /dev/XYZ /mnt/test (by default uses vfat, if it is FATXX formatted USB stick)
또는
mount -t vfat /dev/XYZ /mnt/test (explicitly mount as vfat, if it is FATXX formatted USB stick)
답변2
USB 저장소의 파일 시스템일 수 있습니다. FAT 파일 시스템은 8+3 문자 파일 이름만 지원합니다. 이 파일 시스템은 매우 오래되었습니다. 매우 오래된 시스템에서는 이전 버전과의 호환성만 필요합니다.
FAT는 또한 대문자만 지원합니다. 이는 하나의 사례일 뿐이므로 선택적으로 소문자로 매핑할 수 있습니다. 이렇게 하면 상황이 더 편리해집니다. 대문자를 입력할 필요가 없기 때문에 디렉토리 목록이 시끄러워 보이지 않습니다.
FAT32, ntfs, ext4 또는 기타 형식을 사용해 보세요.