Obecnie pracuję, tar czf
aby połączyć pliki kopii zapasowych. Pliki znajdują się w określonym katalogu.
Ale liczba plików rośnie. Używanie tzr czf
zajmuje zbyt dużo czasu (ponad 20 minut i liczenie).
Muszę łączyć pliki szybciej i skalowalnie.
Znalazłem genisoimage
, readom
i mkisofs
. Ale nie wiem, który jest najszybszy i jakie są ograniczenia dla każdego z nich.
tar
wprowadziło to znaczne obciążenie, czytanie plików jest tutaj kosztowną operacją. Powinieneś albo zmodyfikować sposób przechowywania plików, albo zastosować zupełnie inne podejście (skopiuj system plików jako całość). Nie możemy ci pomóc bez wiedzy na temat organizacji plików.Odpowiedzi:
Powinieneś sprawdzić, czy większość czasu spędzasz na procesorze czy we / wy. Tak czy inaczej istnieją sposoby, aby to poprawić:
Odp .: Nie kompresuj
Nie wspomniałeś o „kompresji” na liście wymagań, więc spróbuj usunąć „z” z listy argumentów:
tar cf
. Może to trochę przyspieszyć.Istnieją inne techniki przyspieszenia procesu, takie jak użycie „-N” do pominięcia plików, których kopię zapasową już utworzono.
B: wykonaj kopię zapasową całej partycji za pomocą dd
Alternatywnie, jeśli tworzysz kopię zapasową całej partycji, zamiast tego weź kopię całego obrazu dysku. Zaoszczędziłoby to przetwarzanie i dużo czasu na wyszukiwanie głowicy dysku.
tar
i każdy inny program pracujący na wyższym poziomie ma narzut związany z czytaniem i przetwarzaniem pozycji katalogu i i-węzłów, aby znaleźć miejsce, w którym znajduje się zawartość pliku i wykonać więcej poszukiwań dysku głównego , odczytując każdy plik z innego miejsca niż dysk.Aby wykonać kopię zapasową podstawowych danych znacznie szybciej, użyj:
dd bs=16M if=/dev/sda1 of=/another/filesystem
(Zakłada się, że nie używasz RAID, co może nieco zmienić)
źródło
pigz
jeśli istnieje w systemie więcej niż jednego procesora.Aby powtórzyć to, co powiedzieli inni: musimy dowiedzieć się więcej na temat plików, których kopie zapasowe wykonujesz. Przyjdę tutaj z pewnymi założeniami.
Dołącz do pliku tar
Jeśli pliki są dodawane tylko do katalogów (tzn. Żaden plik nie jest usuwany), upewnij się, że dołączasz do istniejącego pliku tar, a nie tworzysz go za każdym razem. Możesz to zrobić, określając istniejącą nazwę archiwum w swoim
tar
poleceniu zamiast nowego (lub usuwając stary).Zapisz na innym dysku
Czytanie z tego samego dysku, na którym piszesz, może zabijać wydajność. Spróbuj zapisać na innym dysku, aby rozłożyć obciążenie we / wy. Jeśli plik archiwum musi znajdować się na tym samym dysku co pliki oryginalne, przenieś go później.
Nie kompresuj
Powtarzam tylko to, co powiedział @Yves. Jeśli pliki kopii zapasowej są już skompresowane, nie ma potrzeby ponownego kompresji. Będziesz po prostu marnować cykle procesora.
źródło
Używanie tar z kompresją LZ4 jak w
daje to, co najlepsze z obu światów (raczej dobrą kompresję ORAZ szybkość). Oczekuj współczynnika kompresji około 3, nawet jeśli dane zawierają pliki binarne.
Dalsza lektura: porównanie algorytmów kompresji Jak wykonać tar za pomocą lz4
źródło
Dziwi mnie, że nikt nie wspomniał o zrzucie i przywróceniu. Będzie dużo szybciej niż dd, jeśli masz wolne miejsce w systemie plików.
Pamiętaj, że w zależności od systemu plików, którego potrzebujesz, możesz potrzebować różnych narzędzi:
Zauważ, że niektóre programy nie mają wbudowanej kompresji (wszystkie oprócz zrzutu) - potokuj do standardowego i używaj pigz w razie potrzeby. ;-)
źródło