名前が長すぎて容量を超えるファイルをコピーするには、シェルスクリプトが必要です。

名前が長すぎて容量を超えるファイルをコピーするには、シェルスクリプトが必要です。

NTFSファイルシステムには、短い名前と長い名前のファイルを含むディレクトリがあります。コピーコマンドを入力してそのディレクトリをExt2ファイルシステムにコピーしましたが、短い名前のファイルは問題なくコピーされますが、長い名前のファイルは失敗します。これらのファイル数が大きすぎて問題を2つの手順で解決するにはシェルスクリプトが必要なため、「ファイル名が大きすぎます」というエラーが発生します。

1 - ディレクトリをコピーしてから、短い名前でコピーされたファイルを削除します(移動コマンドでこれを実行できることを知っていますが、コピーコマンドを使用したい)。

2 - 名前の長い残りのファイルの名前の末尾から15〜20文字を削除し、すべてのファイルがコピーされるまでこの手順を繰り返します。

ありがとうございます。

答え1

ファイル名を動的にコピーして切り捨てるには、次のようにします。

cd /src &&
LC_ALL=C pax -rws'|\([^/]\{255\}\)[^/]*|\1|g' ./* /dst/

パスコンポーネントを255バイトに切り捨てます。

ファイル名にマルチバイト文字が含まれていると、文字の途中でファイル名が切り捨てられる可能性があります。

また、シンボリックリンクのターゲットも更新します(ntfsがシンボリックリンクをサポートしているかどうかはわかりませんが)。

複数のファイルの最初の255バイトが同じ場合、ファイルが互いに上書きされる可能性があります。

関連情報