USBドライブにコピーすると、ファイル名が変更されます。

USBドライブにコピーすると、ファイル名が変更されます。

データを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)

おすすめ記事