NTFSファイルシステムには、短い名前と長い名前のファイルを含むディレクトリがあります。コピーコマンドを入力してそのディレクトリをExt2ファイルシステムにコピーしましたが、短い名前のファイルは問題なくコピーされますが、長い名前のファイルは失敗します。これらのファイル数が大きすぎて問題を2つの手順で解決するにはシェルスクリプトが必要なため、「ファイル名が大きすぎます」というエラーが発生します。
1 - ディレクトリをコピーしてから、短い名前でコピーされたファイルを削除します(移動コマンドでこれを実行できることを知っていますが、コピーコマンドを使用したい)。
2 - 名前の長い残りのファイルの名前の末尾から15〜20文字を削除し、すべてのファイルがコピーされるまでこの手順を繰り返します。
ありがとうございます。
答え1
ファイル名を動的にコピーして切り捨てるには、次のようにします。
cd /src &&
LC_ALL=C pax -rws'|\([^/]\{255\}\)[^/]*|\1|g' ./* /dst/
パスコンポーネントを255バイトに切り捨てます。
ファイル名にマルチバイト文字が含まれていると、文字の途中でファイル名が切り捨てられる可能性があります。
また、シンボリックリンクのターゲットも更新します(ntfsがシンボリックリンクをサポートしているかどうかはわかりませんが)。
複数のファイルの最初の255バイトが同じ場合、ファイルが互いに上書きされる可能性があります。