Warum beim Kopieren auf ein externes Laufwerk das Fortschrittsfenster nicht korrekt ist

11

Fühlen Sie sich frei, den Titel zu bearbeiten, um besser zu erklären, was ich hier schreiben werde.

Wenn ich beispielsweise große Dateien auf ein USB-Stick kopiere, zeigt das Fortschrittsfenster eine Schätzung an, dass in den meisten Fällen nicht die Echtzeit und der Prozentsatz für die Fertigstellung angezeigt werden. In einigen Fällen wird jedoch angezeigt, dass alles fertig ist und das Fortschrittsfenster angezeigt wird schließt. Ich gehe, um das USB-Stick zu extrahieren, und es heißt, dass es noch verwendet wird. Nachdem ich das USB-Stick überprüft habe, sehe ich, dass es die Dateien noch kopiert, aber es gibt kein Fortschrittsfenster, das dies anzeigt.

Dies geschieht nicht nur bei großen Dateien, sondern auch bei vielen kleinen Dateien. Wenn ich sie kopiere, zeigt der Fortschrittsbalken beispielsweise 15 Sekunden an und endet in dieser Zeit, aber die Echtzeit kann 1 Minute betragen, und für die nächsten 45 Sekunden muss ich tatsächlich auf das Licht im USB-Stick schauen, um festzustellen, ob es vorhanden ist ist echte Aktivität darauf.

Ich möchte nicht wissen, wie ich es beheben kann, da ich gelesen habe, wie tief ein Fix dafür gehen könnte. Ich möchte wissen, warum dann im Fortschrittsfenster eine Schätzung angezeigt wird, die nicht dem Kopiervorgang entspricht.

Ist es vom Cache in der externen Einheit abhängig?

Beeinflusst die Dateigröße und der Umfang der Datei die korrekte Schätzung? Zum Beispiel 1 Datei mit 4 GB oder 1000 Dateien mit 4 MB.

Gibt es Konfigurationsoptionen, die das Verhalten ändern können?

Es gibt andere ähnliche Fragen wie das Kopieren von Dateien auf den USB-Stick, die nie abgeschlossen wurden, aber ich konzentriere mich mehr auf die Mechanik, warum es sich so verhalten würde.

Luis Alvarado
quelle

Antworten:

6

Ich würde annehmen, dass Sie Nautilus als Dateimanager verwenden, und wenn ja, gibt es langjährige Fehler. Zu numinös, um zu erwähnen, dass Mint, Fedora, Red Hat und dergleichen betroffen sind. Ubuntu ist nicht ohne das gleiche Problem.

Einige schlagen vor, das Deaktivieren der Miniaturansicht zu unterstützen. Andere setzen ihre Hoffnungen auf den "neuesten Kernel", aber dieser existiert immer noch.

Das Problem = Startet schnell und geht dann langsamer. Dies liegt daran, dass bei asynchroner Bereitstellung in den Cache geschrieben wird. Wenn der Cache voll ist, wird die Schreibgeschwindigkeit "Real" angezeigt.

Die Arbeit scheint zu sein sudo cp /filetobecopied /dev/nameofdevice

Ein anderer hier geposteter Artikel besagt, dass "Kopieren in Stücken" funktioniert. Meinerseits unbestätigt.

Ringtail
quelle
3
Zur Verdeutlichung speichert der Kernel die Daten im RAM zwischen, anstatt sie direkt zu schreiben (aus Leistungsgründen). Wenn Sie auf Auswerfen klicken, syncwird im Hintergrund ein Befehl ausgeführt, der den Cache leert. Bei großen Datenmengen kann dies eine Weile dauern.
Dreiunddreißigster
1
TIPP: sudo cp / filetobecopied / dev / nameofdevice ersetzt das gesamte Dateisystem durch Ihre Datei, normalerweise nicht das, was Sie wollen ...
Lennart Rolland
1

Dies ist auch eine schöne Antwort mit einer Lösung: /unix//a/181236 Es heißt:

Der Grund dafür ist, dass das Programm "Diese Daten schreiben" sagt und der Linux-Kernel sie in einen Speicherpuffer kopiert, der in die Warteschlange gestellt wird, um auf die Festplatte zu gelangen, und dann "OK, fertig" sagt. Das Programm glaubt also, alles kopiert zu haben. Dann schließt das Programm die Datei, aber plötzlich lässt der Kernel warten, während dieser Puffer auf die Festplatte verschoben wird.

Leider kann das Programm Ihnen nicht sagen, wie lange es dauern wird, den Puffer zu leeren, da es es nicht weiß.

Wenn Sie einige Power-User-Tricks ausprobieren möchten, können Sie die Größe des von Linux verwendeten Puffers reduzieren, indem Sie / proc / sys / vm / dirty_bytes auf etwa 15728640 (15 MB) setzen. Dies bedeutet, dass die Anwendung nicht mehr als 15 MB vor ihrem tatsächlichen Fortschritt erhalten kann.

Ein Nebeneffekt ist, dass Ihr Computer mit dieser Einstellung möglicherweise einen geringeren Durchsatz beim Schreiben von Daten hat. Insgesamt finde ich es jedoch hilfreich zu sehen, dass ein Programm lange läuft, während es viele Daten schreibt, im Gegensatz zu der Verwirrung, a zu haben Das Programm scheint mit seiner Arbeit fertig zu sein, aber das System bleibt stark zurück, da der Kernel die eigentliche Arbeit erledigt. Wenn Sie dirty_bytes auf einen relativ kleinen Wert einstellen, kann dies auch dazu beitragen, dass Ihr System nicht mehr reagiert, wenn Sie nur noch wenig freien Speicher haben und ein Programm ausführen, das plötzlich viele Daten schreibt.

Aber nicht zu klein einstellen! Ich verwende 15 MB als grobe Schätzung, dass der Kernel den Puffer in 1/4 Sekunde oder weniger auf eine normale Festplatte leeren kann. Es hält mein System davon ab, sich "träge" zu fühlen.

Cirelli94
quelle