web-dev-qa-db-ja.com

「EXDEV:クロスデバイスリンクは許可されていません」というエラーはどういう意味ですか?

このエラーは実際にはどういう意味ですか? 「クロスデバイスリンク」とは何ですか?

このlibuvページ で言及されていますが、「クロスデバイスリンクは許可されていません」以外の詳細は提供していません。

15
callum

LinuxのEXDEVに使用されます。

man renameマンページを参照してください。

EXDEV oldpathとnewpathは、同じマウントされたファイルシステム上にありません。 (Linuxではファイルシステムを複数のポイントにマウントできますが、同じファイルシステムが両方にマウントされていても、rename()は異なるマウントポイント間では機能しません。)

このエラーは、WindowsにERROR_NOT_SAME_DEVICEがある場合にも使用されます。以下を参照してください。

詳細については、以下を参照してください。

winerror.h 0x80070011 #define ERROR_NOT_SAME_DEVICEシステムはファイルを別のディスクドライブに移動できません。

9
rsp

「デバイス」(パーティション)の境界を越えてファイルの名前を変更しようとしているようです。

_/tmp_は_/_とは異なるパーティションだとしましょう。これは、これを行うことが許可されていないことを意味します。

_fs.rename('/tmp/myfile.txt', '/myfile.txt', ...)
_

(明らかにfs.renameSync()にも当てはまります)

そうしたい場合は、まずファイルを新しい場所にコピーcopyしてから、古いファイルを削除する必要があります。 mv などのモジュールがあり、これを支援します。

15
robertklep

Linuxを使用している彼らのためだけに、これは古いパス、つまり/tmpおよび新しいパスは、異なるパーティションまたはディスク上にあります。

0
Suleman Hasib