web-dev-qa-db-ja.com

移動するよりも、常にコピーして削除する方が良いですか?

一般的に言えば、ファイルの移動をキャンセルすると、ターゲットまたはソースが不完全になる可能性があることに気づくと、パニックに陥ります。この質問は、WindowsおよびUnixベースのプラットフォームに適用されます。どちらの場合でもmoveコマンドがどのように機能するかを正確に思い出すことはできません。たとえば、ディレクトリを移動する場合は、ディレクトリ全体をコピーしてから削除しますか、それとも各ファイルを個別にコピーして削除しますか?

mv verybigdir destのようなものを入力した後、おそらくcp -R verybigdir dest  &&  rm -R verybigdir&&演算子は、最初のコマンドが成功した場合にのみ次のコマンドに進む)と入力したはずであることに常に気づきます-またはこれは無意味ですか?私が押すと正確に何が起こりますか Ctrl+C 移動の途中?同様に、Windowsでキャンセルボタンを押すと、正確にはどうなりますか?

何かを移動した回数(前回はsvnを使用したとき)と、内容が分割された2つのディレクトリがあった回数を数えることができません。すべてのアプリケーションが同じようにファイルのグループ移動のグループであるとは限らないため、答えは難しいと思います。

18
Nick Bolton

Windowsでは、同じドライブとパーティションに移動すると、Unixのmvコマンドと同じように動作し、フォルダーの名前を変更するか、その親を変更します。ただし、それを別のドライバーまたはパーティションに移動すると、ファイルごとにコピーおよび削除されるため、圧縮を行わずにtarファイルまたはZipファイルを使用して、パーティションやハードドライブ間でファイルをより速く移動する方が効率的です。 。キャンセルする場合は、停止します。私は同じことがUnixにも当てはまると思いますが、100%確実であるほど十分に実験していません。 iノードを変更するだけの問題ですが、それが別のパーティションまたはドライブにある場合は、そのパーティションまたはドライブのセクターにコピーする必要があります。転送中にキャンセルすると、すでに一部のファイルが移動されており、転送されていたファイルには、その宛先ファイルが削除され、ソースファイルが保持されます(トランザクションはキャンセルされますが、元のファイルは存在します)。

更新:移動をキャンセルして再開したい場合は、移動する注文を再発行してください。宛先フォルダがすでに存在することを警告する場合がありますが、ファイルは転送されます(元の移動の前に存在していないか、2つの移動順序の間に追加されていない限り)上書きされません。ソース(別のパーティションまたはドライブにある場合)。

10
Wolf

失敗することのない完全に安定したコンピュータでも、タイムスタンプを気にする場合は、mvの方が単純なcpよりも優れています。

cp -aはタイムスタンプを保持します。Windowsにも同様のものが存在すると想定しています)。

11
Arjan

番号。

説明:

mv verybigdir dest

verybigdirの名前をdestに変更します。これはアトミック操作です。つまり、途中で失敗することはありません。

Destが別のデバイスにある場合、mvは最初にコピーしてから古いバージョンを削除します。これはアトミック操作ではありません。失敗した場合、destにverybigdirの部分的なコピーしか存在しない可能性がありますが、verybigdirはまだ完全です。

はい、他のアプリケーションではファイルの移動方法が異なる場合があります。

10
Timo Stamm

Windowsでは、移動ではなく常にコピーと削除を行います。私はかつてファイルを移動していましたが、ここで最初にメモリの不良に気づきました。ファイルを移動するときに停止し、エラーが発生したため、ソースフォルダーをチェックしてファイルがなくなってしまったため、宛先をチェックしたところ、破損したファイルがありました。これは、サイズの大きいファイルで頻繁に発生し、それらのほとんどはダウンロードに数時間かかったため、コピーしてから削除することをお勧めします。最初に自分の時間を節約し、それが最後に報われるでしょう。

4
at.

UNIXでは、しないがファイルシステムの境界を越える移動では、mvはデータをコピーせず、さまざまなディレクトリのinodeデータベースを更新するだけです。これは、大きなファイルではcpよりもmuch高速です。

さらに、ファイルシステムの境界を越えてmvを使用すると、コピーと削除のメカニズムが静かに呼び出されます。

だからあなたはmvを好むべきだと思います。

Windowsでは、少なくとも、移動はより自動化されたコピーと削除です。 mvは各ファイルを個別に移動すると思います。つまり、^ c-ingを実行してもファイルが失われることはありません。Windowsエクスプローラーとは異なり、キャンセルするとすべてのファイルが移動されます。

これに対する私の解決策は、移動したいことが確かでない限り、決して移動しないことです。

2
Phoshi

ソースファイルシステムでACLを使用していて、宛先では使用していない場合、Linuxのmvはソースをコピーし、宛先にACLを設定できないため、停止します。つまり、ファイルが両側にあることになります。その動作を防ぐためにmvにはスイッチがないため、この場合はcp && rmが推奨されます。

1
uli42