Po dodaniu preload
pakietu moje aplikacje wydają się przyspieszać, ale jeśli skopiuję duży plik, pamięć podręczna pliku powiększy się ponad dwukrotnie.
Po przeniesieniu jednego obrazu wirtualnego pudełka lub pliku wideo o pojemności 3-4 GB na dysk zewnętrzny ta ogromna pamięć podręczna wydaje się usuwać wszystkie wstępnie załadowane aplikacje z pamięci, co prowadzi do wydłużenia czasu ładowania i ogólnego spadku wydajności.
Czy istnieje sposób kopiowania dużych, wielobajtowych plików bez buforowania ich (tj. Z pominięciem pamięci podręcznej plików)? A może sposób na buforowanie określonych folderów na białej liście lub czarnej liście?
źródło
Dla pojedynczych dużych plików, korzystanie
dd
z bezpośrednim I / O obejście bufora pliku:Jeśli chcesz przenieść jeden (lub kilka) dużych plików o pojemności wielu gigabajtów, możesz to łatwo zrobić z
dd
:direct
flagi powiedziećdd
użyć bezpośredniego opcję I / O (jądraO_DIRECT
) podczas czytania i pisania, a tym samym całkowicie z pominięciem pamięci podręcznej plików.bs
Opcja blocksize musi być ustawiona na stosunkowo dużą wartość, ponieważ w celu zminimalizowania liczby fizycznych operacji dyskowychdd
musi wykonać, ponieważ odczytu / zapisu nie są już buforowane i zbyt wiele małych bezpośrednie operacje mogą spowodować poważne spowolnienie.4M
).Niestety w przypadku wielu / rekurencyjnych kopii katalogu nie ma łatwo dostępnych narzędzi; zwykłe
cp
itp. nie obsługują bezpośredniego wejścia / wyjścia./ e iflag i oflag zmieniono na poprawne iflag i oflag
źródło
zsh
„s**
operatora.zsh
musi być zainstalowany ręcznie z repozytoriów.dd
Dziwna składnia fauluje ** oprtatora. Nadal przydałby się skrypt, który dostał argumenty normalnie (dd.sh in.file out.file
z ** w nazwach) i dał nazwy plików dodd
korzystania$1
,$2
itp, które nie powinny być zanieczyszczone przez składni dziwne DD.Możesz skopiować katalog rekurencyjnie za
dd
pomocąfind
imkdir
Musimy obejść dwa problemy:
dd
nie wie, co zrobić z katalogamidd
można skopiować tylko jeden plik na razNajpierw zdefiniujmy katalogi wejściowe i wyjściowe:
Przejdźmy teraz
cd
do katalogu źródłowego, abyfind
zgłosić katalogi względne, którymi możemy łatwo manipulować:Zduplikuj drzewo katalogów od
$SOURCE
do$TARGET
Zduplikowane pliki
$SOURCE
do$TARGET
pominięcia zapisu pamięci podręcznej (cache ale wykorzystując odczytu!)Pamiętaj, że nie zachowa to czasu modyfikacji pliku, własności i innych atrybutów.
źródło