外付けドライブにコピーするときに進捗ウィンドウが正しくないのはなぜですか


11

タイトルを編集して、ここで何を書こうとしているのかをよりよく説明してください。

たとえば、大きなファイルをペンドライブにコピーすると、進行状況ウィンドウに、ほとんどの場合、リアルタイムと完了の割合が表示されないという見積もりが表示されますが、すべてが完了し、進行状況ウィンドウが表示される場合があります閉じます。ペンドライブを取り出しに行くと、まだ使われているそうです。ペンドライブを確認した後、まだファイルをコピーしていることがわかりますが、これを示す進行状況ウィンドウはありません。

これは大きなファイルで発生するだけでなく、多くの小さなファイルでも発生します。それらをコピーすると、進行状況バーはたとえば15秒と表示され、その時間で終了しますが、実際の時間は1分で、次の45秒は実際にペンドライブのライトを見て、そこにあるかどうかを確認する必要があります。それに対する実際の活動です。

私はこれの修正がどれだけ深く行くことができるかを読んだので、それを修正する方法を知りたくありません。私が知りたいのは、なぜ進捗ウィンドウにコピーのプロセスに対応しない見積もりが表示されるのかです。

外部ユニットのキャッシュに依存していますか?

正しい見積もりに対するファイルサイズとファイルの影響量です。たとえば、4 GBの1ファイルまたは4 MBの1000ファイル。

動作を変更できる構成オプションはありますか?

USBスティックへのファイルのコピーなど、これに類似した他の質問がありますが、なぜこのように動作するかについてのメカニズムに重点を置いています。

回答:


6

ファイルマネージャーとしてNautilusを使用していると思いますが、そうであれば、これには長期にわたるバグがあります。Mint、Fedora、Red Hatなどすべてに影響を与えることについて言及するには余りにも多すぎます。Ubuntuにはこの同じ問題がないわけではありません。

サムネイル表示をオフにすると便利な場合もあります。他の人たちは彼らの望みを「最新のカーネル」に入れましたが、これはまだ存在しています。

問題=最初は速く始まり、その後遅くなるこれは、非同期でマウントするとキャッシュに書き込まれるため、キャッシュがいっぱいになると「実際の」書き込み速度が表示されるためです。

回避策は sudo cp /filetobecopied /dev/nameofdevice

ここに投稿された別の人は、「チャンクでのコピー」が機能すると言っています。私の側では未確認です。


3
明確にするために、カーネルはデータを直接書き込むのではなく、RAMにキャッシュします(パフォーマンス上の理由から)。[取り出し]をクリックsyncすると、バックグラウンドでコマンドが実行され、キャッシュがフラッシュされます。大量のデータの場合、これにはしばらく時間がかかる場合があります。
1

1
ヒント:sudo cp / filetobecopied / dev / nameofdeviceは、ファイルシステム全体をファイルに置き換えます。通常は、必要なファイルではありません。–
Lennart Rolland

1

これはまた、溶液と素敵な答えです: https://unix.stackexchange.com/a/181236 それは言います:

そのように発生する理由は、プログラムが「このデータを書き込む」と言っており、Linuxカーネルがそれをディスクに移動するためにキューに入れられたメモリバッファーにコピーしてから、「ok、done」と言っているためです。したがって、プログラムはすべてをコピーしたと見なします。次に、プログラムはファイルを閉じますが、そのバッファーがディスクにプッシュされる間、カーネルは突然待機させます。

したがって、残念ながら、プログラムはバッファをフラッシュするのにかかる時間を知らないので、それを知ることができません。

パワーユーザーのトリックを試したい場合は、/ proc / sys / vm / dirty_bytesを15728640(15 MB)のように設定することで、Linuxが使用するバッファーのサイズを減らすことができます。これは、アプリケーションが実際の進捗状況より15 MB以上多く取得できないことを意味します。

副作用として、この設定ではコンピューターのデータ書き込みスループットが低下する可能性がありますが、全体として、プログラムが大量のデータを書き込んでいる間、プログラムが長時間実行されていることと、プログラムはその仕事を終えたように見えますが、カーネルが実際の仕事をするので、システムはひどく遅れています。dirty_bytesを適度に小さい値に設定すると、空きメモリが不足して突然大量のデータを書き込むプログラムを実行したときにシステムが応答しなくなるのを防ぐのにも役立ちます。

ただし、小さすぎないようにしてください。カーネルがバッファを通常のハードドライブに1/4秒以下でフラッシュできるというおおよその見積もりとして15MBを使用します。それは私のシステムが「だらしない」と感じるのを防ぎます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.