Nach dem Hinzufügen des preload
Pakets scheinen sich meine Anwendungen zu beschleunigen. Wenn ich jedoch eine große Datei kopiere, vergrößert sich der Dateicache um mehr als das Doppelte der Dateigröße.
Durch das Übertragen eines einzelnen Abbilds oder einer Videodatei mit 3-4 GB auf ein externes Laufwerk werden scheinbar alle vorinstallierten Anwendungen aus dem Arbeitsspeicher entfernt, was zu längeren Ladezeiten und allgemeinen Leistungseinbußen führt.
Gibt es eine Möglichkeit, große Dateien mit mehreren Gigabyte zu kopieren, ohne sie zwischenzuspeichern (dh den Dateicache zu umgehen)? Oder eine Möglichkeit, bestimmte Ordner aus der Whitelist oder der Blacklist aus dem Cache zu entfernen?
quelle
Für einzelne große Dateien, Verwendung
dd
mit direktem E / A - Bypass - Dateicache:Wenn Sie eine (oder mehrere) große Multi-Gigabyte-Dateien übertragen möchten, ist dies ganz einfach
dd
:direct
Flags teilendd
mit, dassO_DIRECT
beim Lesen und Schreiben die direkte E / A-Option ( ) des Kernels verwendet werden soll , wodurch der Dateicache vollständig umgangen wird.bs
Option blocksize muss auf einen relativ großen Wert gesetzt werden, da zur Minimierung der Anzahl der Vorgänge auf der physischen Festplattedd
keine Lese- / Schreibvorgänge mehr zwischengespeichert werden müssen und zu viele kleine direkte Vorgänge zu einer ernsthaften Verlangsamung führen können.4M
).Für mehrfache / rekursive Verzeichniskopien gibt es leider keine leicht verfügbaren Tools. die üblichen
cp
usw. unterstützen keine direkten I / O./ e iflags & oflags wurden in das richtige iflag & oflag geändert
quelle
zsh
dem**
Operator von erfolgen.zsh
muss manuell von den Repos installiert werden.dd
's seltsame Syntax verdirbt den ** oprtator. Sie könnten noch einen Shell - Skript verwenden , die Argumente normalerweise bekam (dd.sh in.file out.file
mit ** in den Dateinamen) und gab die Dateinamen zudd
verwenden$1
,$2
usw., die nicht von DDs seltsamen Syntax verschmutzt werden soll.Sie können ein Verzeichnis rekursiv kopieren mit
dd
Verwendungfind
undmkdir
Wir müssen zwei Probleme umgehen:
dd
weiß nicht, was mit Verzeichnissen zu tun istdd
kann jeweils nur eine Datei kopierenDefinieren wir zuerst die Eingabe- und Ausgabeverzeichnisse:
Lassen Sie uns nun
cd
in das Quellverzeichnisfind
gehen, um relative Verzeichnisse zu melden, die wir leicht bearbeiten können:Duplizieren Sie den Verzeichnisbaum von
$SOURCE
bis$TARGET
Dupliziere Dateien von
$SOURCE
,$TARGET
um den Schreibcache wegzulassen (aber benutze den Lesecache!)Beachten Sie, dass dadurch die Änderungszeiten, der Besitz und andere Attribute der Datei nicht erhalten bleiben.
quelle