Zastanawiałem się nad tym, usuwając kilkanaście obrazów z mojego komputera: dzięki szybkiemu rm -rf
poleceniu zawartości katalogu wszystkie obrazy zniknęły w mgnieniu oka. Kiedy przeciągam te same kilkanaście obrazów do kosza na śmieci / recykling, zajmuje to czasami 10 sekund lub więcej.
Teraz jestem pewien, że część z nich pochodzi z narzutu GUI i tym podobnych, a niektóre z nich mogą wynikać z faktu, że plik nadal „istnieje” w jakiejś formie, jeśli zostanie umieszczony w koszu, ale czy jest coś jeszcze odpowiada za tak ogromne różnice czasowe? Czy „rm” i „delete” to tak zasadniczo różne polecenia, więc próbuję porównać jabłka i pomarańcze?
linux
command-line
Jordan Plahn
źródło
źródło
Odpowiedzi:
Jak słusznie zauważyłeś, GUI robi więcej niż tylko „usuwa” pliki.
po prostu przechodzi do folderów, usuwając pliki i foldery, które tam znajduje.
GUI najpierw skanuje całe drzewo, aby ustalić, co tam jest (więc wie, ile trzeba zrobić, aby narysować ładny pasek), a następnie ponownie przechodzi przez drzewo, przenosząc pliki z bieżącej lokalizacji do lokalizacji pliki kosza na określone GUI. To przenoszenie trwa dłużej, ponieważ najpierw musi wygenerować nową unikalną nazwę pliku, połączyć plik w folderze kosza, a następnie odłączyć go od bieżącego folderu i zaktualizować indeks, z którego pochodzą pliki, aby można je było „cofnąć” - wiele operacji zamiast tylko jednej.
Na przykład w Gnome 3 pliki są przenoszone do lokalizacji:
Gdzie
filename
jest oryginalna nazwa pliku iversion
jest to rosnący numer wersji, aby zapewnić unikalność pliku (pierwsza instancja pliku nie ma numeru wersji). Z tym powiązany jest.trashinfo
plik przechowywany w folderze:Ten plik zawiera oryginalną ścieżkę pliku przed usunięciem, a także datę i godzinę usunięcia tego pliku.
Wszystkie te dodatkowe operacje, które należy wykonać na każdym usuwanym pliku w usuwanym drzewie, zapewniają przywrócenie dowolnego pliku z kosza oraz usunięcie plików o tej samej nazwie z ta sama lokalizacja i nadal przywracaj wcześniejsze wersje.
Nic z tego nie jest wykonywane za pomocą polecenia prostego
rm
lubmv
polecenia.źródło
trash-cli
nie robi tego rekurencyjnie. Czy podczas usuwania folderu Gnome 3 tak naprawdę.trashinfo
rekursywnie umieszcza plik dla każdego podfolderu i wszystkich plików zawierających?