USBスティックにデータをコピーするbashスクリプトがあります。できます。データは正常にコピーされますが、ファイル名は常に変更されます。以前と同じですが、名前が8文字にカットされ、拡張子は3文字(最大合計11文字)になります。
したがって、「willGetCutShorter.html」という元のファイルはドライブ上で「willGetS.htm」になりますが、「small.txt」は同じままです。コピーされたディレクトリ名は同じ方法で切り取られ、すべて8文字の長さになります(もちろん、拡張子はありません)。
私はこれが起こらないようにしたい。ファイル名とディレクトリ名をまったく変更しないようにしたい。なぜこれが起こっているのかもわかりません。
Bashスクリプトでは、アスタリスクを使用してコンピューターディレクトリ内のすべてのものをドライブにコピーし、すべてのコンピューターディレクトリの内容を表します。これが理由なのかしら?おそらく、cpはファイル名の一部しか取得していませんか?
また、Linuxでは、ファイルはすべて小文字で表示されますが、元々大文字であったものも含まれます。ただし、Windowsでは、すべてのファイルとフォルダーが大文字になります。
どうして?
この方法で使用を開始する前に、Windows7マシンでUSBドライブをフォーマットしました。私の/etc/fstab
ファイルmsdosとしてマウントするドライブのエントリを追加しました。これは、マニュアルページ(おそらく「manmount」)を読んだところ、ドライブ形式であるFAT32がmsdosでカバーされていると書かれていたためです。
ファイルシステムタイプとしてFAT32を使用してマウントしたかったのですが、マウントのマニュアルページにそのオプションが表示されませんでした。 fstabエントリは、mountコマンドがこれのみで構成されていることを意味します。
Sudo mount /mnt/
Bashスクリプトのコピーコマンドはすべて次のようになります。
cp -f -r /path/to/dir/* /mnt/to/dir/
ドライブを別のものに再フォーマットする必要があるように聞こえますか、それとも少し異なる方法でマウントしますか?
以下のようなマウントコマンドを使用していると思われます。
mount -t msdos /dev/XYZ /mnt/test
これにより、長いファイル名を使用するvfatの代わりに、8.3ファイル名規則( https://en.wikipedia.org/wiki/8.3_filename を参照)を使用するレガシーDOSFATファイルシステムにパーティションが強制的にマウントされます。 ( 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)
それはおそらくusb-storage上のファイルシステムです。 FATファイルシステムは、8 +3文字のファイル名のみをサポートできます。このファイルシステムは非常に古いものです。これは、非常に古いシステムとの下位互換性のためにのみ必要です。
FATは大文字のみをサポートします。これは1つのケースにすぎないため、これを小文字にマップするオプションがあります。これは物事をより便利にします。大文字を入力する必要がないため、ディレクトリリストは派手に見えません。
FAT32、ntfs、ext4、その他の使用を検討してください。