
データを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は大文字のみをサポートします。これは1つのケースにすぎず、オプションで小文字にマッピングできます。これにより、状況がより便利になります。大文字を入力する必要がないため、ディレクトリリストがうるさいように見えません。
FAT32、ntfs、ext4、またはその他の形式を試してください。