Mam katalog, który zawiera ~ 3 miliony plików w niektórych podkatalogach na serwerze z systemem Windows 2008. Ręczne usuwanie plików za pomocą SHIFT + DEL w katalogu głównym trwa wieki. Czy istnieje inny sposób na szybsze usunięcie ?
windows
file-management
Cfinley
źródło
źródło
Odpowiedzi:
OSTRZEŻENIE: jeśli masz dowiązania symboliczne do katalogów
del
, usuniesz rzeczywiste katalogi, a nie dowiązania symboliczne. Bądź bardzo ostrożny i nie uruchamiaj tych poleceń, chyba że wiesz, że w katalogu docelowym nie ma dowiązań symbolicznych.Regularnie muszę usuwać wiele plików i katalogów z zaszyfrowanego dysku WinXP, zwykle około 22 GB z 500 000 plików w 45 000 folderów.
Usuwanie za pomocą Eksploratora Windows jest marnotrawstwem, ponieważ marnuje dużo czasu na wyliczanie plików. Zwykle przenoszę rzeczy, które muszę usunąć, do C: \ stufftodelete i mam plik wsadowy deletestuff.bat
rmdir /s/q C:\stufftodelete
. To ma działać w nocy, ale czasami muszę go uruchomić w ciągu dnia, więc im szybciej, tym lepiej.Oto wyniki szybkiego testu małej próbki 5,85 MB z 960 plików w 303 folderach. Uruchomiłem metodę 1, a następnie metodę 2, a następnie zresetowałem katalogi testowe.
Metoda 1 usuwa pliki i strukturę katalogów w jednym przebiegu:
Metoda 2 ma pierwszy przebieg, aby usunąć pliki i dane wyjściowe do wartości nul, aby uniknąć narzutu pisania na ekranie dla każdego pojedynczego pliku. Drugie przejście następnie usuwa pozostałą strukturę katalogów:
Oto wyniki kolejnego testu z wykorzystaniem 404 MB z 19 521 plików w 3224 folderach:
Więc nie ma w tym wiele, prawdopodobnie zbyt blisko, aby ocenić na jednym teście.
Edycja: Przetestowałem znacznie więcej danych, jest to dla mnie typowy przypadek: 28,3 GB z 1 159 211 plików w 146 918 folderach:
Wow, metoda 2 jest prawie trzy razy szybsza niż metoda 1! Będę aktualizować mój plik deletestuff.bat!
źródło
del
, usuniesz rzeczywiste katalogi, a nie dowiązania symboliczne. Bądź bardzo ostrożny i nie uruchamiaj tych poleceń, chyba że wiesz, że w katalogu docelowym nie ma dowiązań symbolicznych.Jeśli musisz regularnie usuwać duże drzewa katalogów, rozważ przechowywanie katalogu głównego tego drzewa katalogów na osobnej partycji, a następnie po prostu szybko sformatuj je, gdy zajdzie potrzeba usunięcia wszystkiego. Jeśli chcesz to zautomatyzować, możesz użyć tego polecenia DOS:
gdzie Z: jest twoją „zmienną” partycją. Uwaga: partycja nie może mieć etykiety. Blogowałem o tym tutaj .
źródło
W wierszu polecenia (Start -> Uruchom ->
cmd
):źródło
Oprócz bardzo szybkiego kopiowania / przenoszenia plików (przy użyciu własnego interfejsu API), TeraCopy może usuwać pliki i jest również bardzo szybki. Odkąd dowiedziałem się o TeraCopy, nie używam komputera bez zainstalowanego (jeśli mam skopiować / przenieść / usunąć).
Ten sam instalator instaluje wersję x64, ale aby z niej skorzystać, musisz ją ręcznie wymusić.
Wersja beta, którą polecam w stosunku do stabilnych wersji: http://blog.codesector.com/2010/09/22/teracopy-2-2-beta-3/
źródło
Zrobiłem plik bat, który robi to samo.
wykonuje pracę w dwóch krokach, jeden, próbuje usunąć pliki. Drugim jest próba przejęcia własności plików. Należy zmienić y zgodnie z lokalnym (po angielsku „tak”). Jeśli zadanie nie powiedzie się (na przykład jeśli nie powiedzie się, ponieważ ma pozwolenie), musisz je ponownie uruchomić. Jednak druga runda nie będzie próbowała usunąć plików usuniętych w pierwszej rundzie, więc może być dość szybka.
Jak tego użyć. Zapisz jako delfolder.bat na trasie ścieżki (na przykład c: \ windows), a następnie uruchom go jako
gdzie nazwa_folderu to nazwa folderu
W moim teście usunięcie 123'000 plików zajęło 3 minuty (sata 7200 rpm). TAK!
źródło
%1
w skrypcie, ale"%~1"
. W ten sposób, jeśli argument został przekazany z cudzysłowami, jest on cytowany i rekwotowany. Jeśli nie został przekazany z cytatami, jest cytowany.Korzystanie z poniższego kodu zwykle działa dobrze dla mnie.
źródło
rsync
w systemie Linux. Czy jest tu nawet szybciejrmdir
?del /f/q/s
+rmdir /s/q
. Jeśli Twoje dir_to_wipe zawiera informacjec:\some_important_dir
, stracisz swoje dane.Użyj polecenia rd / s z wiersza polecenia.
źródło
Najlepszym praktycznym rozwiązaniem jest prawdopodobnie przeniesienie folderu gdzieś z drogi (np. Kosz), a następnie rozpoczęcie jego usuwania. To zajmie wieki, ale przynajmniej nie będzie przeszkadzało.
Jestem prawie pewien, że czas potrzebny na usunięcie wszystkich tych plików jest nieodłącznym wymogiem zadania, a nie nieefektywnością w realizacji usuwania.
źródło
Zainstaluj Cygwin i użyj rm -r . Ale to prawdopodobnie będzie przesada.
źródło
rd /q /s
...rm
naprawdę tak szybki, jak wbudowany program cmd.exerd
? Ponieważ emulacja cygwina interfejsu posix jest raczej powolna, ponieważ wymaga dodatkowej pracy, corm
tak naprawdę nie docenia.rm -rf
. Około 10 minut przerwałem i wróciłem do niego,del /f/s/q
ponieważ w Cygwin użycie dysku wyniosło tylko 50%. Poniżejdel
zużycie dysku jest ustalone na 100%. Myślę, że to musi być usuwane szybciej. Zużycie procesora wynosi <1% dla obu metod. Nie jestem pewien numeru pliku, ponieważ zamknąłem narzędzie do usuwania plików systemu Windows po 10 minutach obliczeń.Czy masz włączone generowanie krótkich nazw plików? Jeśli tak, czy naprawdę tego potrzebujesz? Usunięcie pliku to tylko operacja na metadanych. Więc jeśli masz dwa razy więcej nazw do usunięcia, ilość pracy jest znacznie wyższa.
źródło
Czy wypróbowałeś którąś z tych dwóch aplikacji?
Pamiętaj, aby ustawić liczbę zastępowań na 0, jeśli chcesz uzyskać najwyższą wydajność. Zrób to, klikając opcje, a następnie zmień wartość na dole okna dialogowego.
Wprowadź ścieżkę do usunięcia w polu Źródło, a następnie kliknij Usuń.
Te aplikacje nie umieszczają plików w koszu. Używaj ostrożnie.
źródło
Ma to na celu uzupełnienie i uzupełnienie kroków podanych we wcześniej wymienionych odpowiedziach.
Podane dwie powyższe metody wydają się dość skuteczne, ale określenie wydajności byłoby trudne, chyba że zostaną porównane z dokładnie tymi samymi warunkami:
Następnie wykonaj konfiguracje za pomocą pliku wsadowego i użyj polecenia cmdlet programu Powershell, aby zarejestrować i zmierzyć ich wydajność.
Oto niektóre przykładowe foldery (nazwane jako całkowity rozmiar), na których eksperymentowałem, ale nie byłem w stanie uzyskać żadnych rozstrzygających wyników / wyników.
r.bat
rd.bat
PowerShell:
źródło
Odpowiedź od Hugo jest najszybsza, ale nie usuwa plików ukrytych ani systemowych w pierwszym przejściu, więc jeśli chcesz bardziej kompletnego rozwiązania, użyj parametru / a:
O pliku BAT Magallanes , bądź bardzo ostrożny w przypadku takeown i icacls, ponieważ hardlinki mają takie same uprawnienia i właściciele, więc jeśli w folderze, który chcesz usunąć, są nienasycone hardlinks, użycie takeown i icacls zmieni uprawnienia i właścicieli plików na zewnątrz folder.
Za pomocą narzędzia ln.exe możesz wyświetlić listę wszystkich plików dowiązanych w folderze i dowiedzieć się, czy są dowiązane do plików poza folderem (nienasycone dowiązania twarde):
źródło
Usuwanie folderu jest szybsze niż usuwanie wielu plików.
Więc jeśli wolisz używać myszy zamiast wiersza polecenia, możesz utworzyć katalog, przenieść tam pliki i usunąć go (za pomocą Shift + Del, jak powiedziałeś).
źródło