ファイルシステム間のおおよその原子移動?

ファイルシステム間のおおよその原子移動?

Ubuntuでは、あるファイルシステムから別のファイルシステムにいくつかのファイルを移動する必要があります。ただし、ファイルがターゲットの場所に部分的または不完全なファイルとして存在しないことは非常に重要です。少なくとも正しいファイル名が必要です。

これまでの私の唯一の解決策は、各ファイルをインポートしてターゲットの一時的な名前にコピーし、ターゲットから名前を元のファイル名に変更し(原子的でなければならないと思います)、最後にソースファイルを削除するスクリプトを作成することです。

しかし、スクリプトを作成してデバッグするのは、この作業には余りにも過度なようです。すでにローカルでこれを行う方法やツールはありますか?

ベストアンサー1

rsync一時ファイル名にコピーされます(例:Rsync一時ファイル拡張子そしてrsync - 転送中に一時ファイルを生成しますか?)このオプションを使用しない限り--inplace。ファイルが正常に転送された後にのみファイル名を変更してください。 rsyncまた、部分的にのみ転送されたターゲットファイルも削除されます(ディスクがいっぱいになったり、その他のエラーが原因で)。

--remove-source-filesソースファイルを正常に転送した後に削除するオプションもあります。rsync詳しくはマニュアルページをご覧ください。

これらすべてをまとめると、次のことができます。

rsync -ax --remove-source-files source/ target/

このオプションは、「受信」キューや処理される類似のディレクトリからファイルを移動するなどの操作に特に役立ちます。

あるいは使い捨てミラーの場合は、rsyncこの--remove-source-filesオプションを使わずにそのまま使用してください。必要に応じて、または必要に応じて後でソースファイルを削除できます。

おすすめ記事