このコマンドを使用してLinux上でファイルを移動すると、ファイルはmv
移動されますが、作成時間は現在の時刻に変わりません。これを行うには、コマンドのみを使用する必要がありますtouch
。それでは、これら2つのタスクを自動的に実行できるコマンドはありますか?
ストリーミングディレクトリでファイルのアトミック移動が必要なローカルモード(HDFSではなくローカルファイルシステムを使用)でSparkのtextFileStreamingを使用しているため、これに興味があります。時間が移動されたファイルの元の時間と同じままである場合、ストリーミングプログラムはそれを認識しません。スクリプトを使って最初にファイルを移動し、次にタッチして時間を変更することを確認します。ただし、タッチを使用してファイルの時間を変更する前に、ストリーミング プログラムでファイルを確認して無視する場合が発生する可能性があります。
答え1
mv
、同じファイルシステムで作業している場合、ファイル自体は変更されず、場所のみが変更されます。このファイルを変更するには必要たとえば、別のユーティリティを使用するtouch
か、単にcp
ファイル(これを行うと、新しい変更とアクセス時間を含む新しいファイルが作成されます)と古いrm
ファイルが使用されます。特に大きなファイルであれば非効率的でしょう。これがtouch
当初このようなツールが存在する理由です。
あるいは、問題が原子性の場合は、ファイルを一時的な場所に移動してからtouch
最終的な場所に移動することもできます。