- ベストアンサー
ロングファイル名のため移動や名称変更等ができません
データを新しいデータサーバに移行させようとしています。 その作業中、ファイル名がそれだけでも200文字を超えていて、そのファイルが格納されている複数層のフォルダ名まで入れたフルパス名となると軽く255文字を超えているデータが存在するため、データの移行(ファイルのコピー操作)ができません。またファイル名を変更しようとしてもそれもできません。 何かよい方策はありませんでしょうか。ご教示のほど宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>すべての共有を解除すれば、制限にひっかかることなくファイル移動ができると期待していいのでしょうか? そういうことではなくて、 サーバ上で操作をする場合、自サーバ内のデータであっても、フルパス指定をするとパスの長さの制限にひっかかってしまうので、フルパス指定を回避するために、共有されているポイントで、ネットワークドライブとしてマウントすれば、その分だけパスが短くなるので制限が回避できるということです。 例えば D:\dir1\dir2\dir3\dir4\参った狸は目でわかる.腰すえて というファイルがある場合、 \\Server\D$\dir1\dir2\dir3 をネットワークドライブE:としてマウントすれば E:\dir4\参った狸は目でわかる.腰すえて でアクセスできるわけです。 ここで\dir1\dir2\dir3の長さが255文字に近ければ D:\dir1\dir2\dir3\dir4\参った狸は目でわかる.腰すえて などというファイルはそもそも作成できません。ですが、 E:\dir4\参った狸は目でわかる.腰すえて ならば作成できます。 通常、クライアントはこのようにサーバ上のフルパスを意識しないでファイルにアクセスをしています。意識する必要があるのは不都合です。 一方、サーバ上でアクセスをする場合には、当然に制限にひっかかりますので、それを回避するにはクライアントと同様にネットワークドライブとしてマウントしてやればよいのです。 共有を解除するのではありません。 自サーバ内のファイルであるけれども、ネットワークドライブとして新たにマウントすれば、パスの長さの制限は回避できる、ということです。
その他の回答 (4)
Windows2000サーバで試してみましたが、コマンドプロンプトでカレントディレクトリを移動するのはだめですね。パスの長さが255を越えた時点で移動できなくなります。 コマンドプロンプトで、ロングファイル名のファイルが支障なくコピーできることは確認しました。 Dドライブなら、デフォルトでD$で共有化されていると思います。 そこで、\\Server\D$\folder1\folder2\folder3 をネットワークドライブとしてマウントするとfolder3がドライブとしてマウントできます。 サーバ上でローカルとしてアクセスしようとするとする限り、フルパスの長さ制限からは逃れられません。NTBackupも試しましたが、やはり見えません。 逆に言えば、制限にひっかかるファイルが存在するということは、そのパスのどこかが共有されている(されていた)ということだと思います。
補足
お正月というのに本当にありがとうございます。 >逆に言えば、制限にひっかかるファイルが存在するということは、そのパスのどこかが共有されている(されていた)ということだと思います。 ご推察の通り、\\Server\D$\folder1\folder2\folder3 の階層のうち、foler1の階層で特定のグループに属する者全員にネットワークドライブとして見せるため共有させてあり、また、folder2の階層でも特定の個人用に共有させています。 すべての共有を解除すれば、制限にひっかかることなくファイル移動ができると期待していいのでしょうか? よろしくお願い致します。
>「カレントディレクトリを階層の下の方に移動して作業する」とのことですが これはコマンドプロンプトで実行する場合です。 cdコマンドで、最も下の階層に行けば copy d:*.* z:[Enter] のように操作できます。 フォルダの共有化は、サーバの管理者アカウントであればできるはずです。
補足
何度もお手数をおかけして申し訳ありません。 階層の下に移動する件ですが、コマンドプロンプトでファイル移動することも考えたのですが、ファイル名としてワイルドカードを使用した場合、ロングファイルも移動されるのでしょうか?仮に移動できたとしても、移動後のファイル名が8.3ルールにより、システム側で勝手にファイル名が変更されてしまいませんでしょうか? 今年末年始休業に入っているため、7日になりませんと作業ができません。 ご教示戴きましたことは、7日以降に試してみます。 年末のお忙しいときにいろいろとご教示下さりありがとうございました。
- assault852
- ベストアンサー率48% (1364/2797)
検索してみたのですが、よい回答が見つかりません。 フォルダごとどこかに移してからファイル名を変更することもできませんか。 こんなことしか思いつきません。
お礼
年末の慌ただしい時にありがとうございました。 フォルダごとどこかに移すことができればよいのですが、それすらできません。 今、年末年始休業に入ったため、また7日以降、模索してみます。 ありがとうございました。
カレントディレクトリを階層の下のほうに移動して作業する、 か、階層の適当な位置のフォルダをネットワーク共有にしてネットワークドライブとしてマウントしてしまえば、できるのではないかと思います。
補足
まず、移動させようとしているファイルは、サーバー(Windows 2000サーバー)のDドライブのフォルダ内にあります。移動先は、ネットワークに接続されたバッファローのテラステーションです。 「カレントディレクトリを階層の下の方に移動して作業する」とのことですが、移動対象のファイルは最下層のディレクトリに存在します。このためご教示戴いた内容の意味がよく理解できません。すみません。 また、「階層の適当な位置のフォルダをネットワーク共有して」とのご教示ですが、ネットワーク共有できるのは、上記サーバーのDドライブに複数存在するディレクトリしか共有できません(筆頭のディレクトリの配下にあるディレクトリはネットワーク共有できないようです)。 以上宜しくお願い致します。
お礼
丁寧な回答を頂戴しておきながら、年明けから海外出張で長期不在でありましたため、お礼を申し上げるのがたいへん遅くなり申し訳ありませんでした。 やはり、ご教示戴いた方法で255文字の制限を回避する他ないようですが、各ユーザーで階層の深さやフォルダ名の長さ、またファイル名の長さがまちまちであり、しかもフォルダ数が生半可な数ではないため、最終的に、全ユーザーに対して一様に作業を行うことは困難と判断し、あきらめることにしました。 せっかくいろいろとアドバイス頂きながら申し訳ありません。 来月、サーバーの入れ替えを行うこととなり、データ移行作業が最大の問題となってきました。移行作業は専門業者に頼むことになりますが、業者も方策を思案中です。 いろいろとありがとうございました。