26

Что-то, о чем я задумывался, когда удалял с моего компьютера дюжину или около того изображений: с помощью быстрой команды rm -rf для содержимого каталога все изображения сразу исчезли. Когда я перетаскиваю дюжину или около того изображений в мусорную корзину / бан для повторного использования, иногда это занимает 10 секунд или больше.

Теперь я уверен, что некоторые из них происходят из-за накладных расходов графического интерфейса и тому подобного, и некоторые из них могут заключаться в том, что файл все еще "существует" в некоторой форме, если он помещен в корзину, но есть ли что-нибудь еще, что объясняет такое огромное временное неравенство? Являются ли "rm" и "delete" просто такими принципиально разными командами, поэтому я пытаюсь сравнить яблоки и апельсины?

1 ответ1

38

Как вы правильно заметили, графический интерфейс делает больше, чем просто "удаляет" файлы.

$ rm -rf 

просто повторяется в папки, удаляя найденные там файлы и папки.

Сначала графический интерфейс сканирует все дерево, чтобы выяснить, что там есть (поэтому он знает, сколько нужно сделать, чтобы нарисовать красивую полосу), затем он повторяется через дерево, снова перемещая файлы из текущего местоположения в местоположение файлы корзины для вашего конкретного графического интерфейса. Это перемещение занимает больше времени, так как сначала нужно сгенерировать новое уникальное имя файла, связать файл в папке "Корзина", затем отсоединить его от текущей папки и обновить индекс того, откуда пришли файлы, чтобы их можно было "отменить" - много операций вместо одной.

Например, в Gnome 3 файлы перемещаются в папку:

~/.local/share/Trash/files/<filename>[.<version>]

Где filename - это исходное имя файла, а version - инкрементный номер версии, чтобы обеспечить уникальность файла (первый экземпляр файла не имеет номера версии). С этим связан файл .trashinfo который хранится в папке:

~/.local/share/Trash/info/<filename>[.<version>].trashinfo

Этот файл содержит исходный путь к файлу до удаления, а также дату и время удаления этого файла.

Все эти дополнительные операции, которые должны выполняться для каждого отдельного файла в дереве, которое вы удаляете, гарантируют, что вы сможете восстановить любой файл из корзины, и что вы можете удалить файлы с такими же именами из то же место и до сих пор восстановить более ранние версии.

Ничего из этого не делается с помощью простой команды rm или mv .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .