私はDebianサーバー上にDjangoアプリケーションを持っており、現在のディスクの現在のsite_mediaディレクトリは一杯です。だから私は2番目のディスクにファイルをアップロードしたい。サーバー上のパスは/ディスクです:django app複数のハードドライブ[Errno 18]デバイス間のリンクが無効
obj = form.save(commit=False)
obj.user_id = self.request.user.pk
obj.save()
initial_path = obj.file.path
print(initial_path)
new = settings.MEDIA_ROOT_NEW + obj.file.name
print(new)
os.rename(initial_path,new)
shutil.move(initial_path, new)
と私は私のsettings.pyに: ジャンゴ[ERRNO 18]無効なクロスデバイスリンク
: MEDIA_ROOT = os.path.join(PROJECT_PATH, 'site_media/')
MEDIA_ROOT_NEW = '/disk/site_media/'
まだ私はエラーを取得します
アイデア?
これを振り返ってみると、アプリが元の場所にデータを保存してからコピーするのではなく、単に新しい場所に移行する方が意味があります。 'MEDIA_ROOT'を'/disk/site_media/'に変更できませんか? –
ご覧のとおり、2つのディスクがあります。最初(MEDIA_ROOT)がいっぱいです。私たちはそれをそのままにしなければなりません。 2番目のディスクにMEDIA_ROOT_NEWパスでファイルをアップロードし、そのディスクからもファイルを読み込むように管理する必要があります。何か案は?? –
私は適切な解決策を思いつくことは、SOのコメント以上の会話を必要とすると思います。なぜあなたは 'MEDIA_ROOT'をそのままにしておかなければならないのかについての正確な理由を知らずに、私はまだ「より大きなディスクを取得し、現在のデータを' MEDIA_ROOT'から移行して、あなたのアプリケーションを新しいディスクに向ける」ことを勧めます。よりシンプルです - 両方のディスクに読み書きを調整しなければならない理由を考えることはできません。 –