Почему я намного быстрее, чем СКП? Как восстановиться после некорректной команды mv?

После нескольких неудачных попыток мне наконец удалось установить драйвер AMD 15.9 на ubuntu 15.10.

Следующие шаги нацелены на то, чтобы позволить пользователю установить драйвер в ubuntu 15.10 и любой из его разновидностей.

Следующие шаги выполняются при новой установке ubuntu 15.10.

  1. Установите драйвер:

sudo apt-get install fglrx-updates gcc-4.9 g ++ - 4.9

  1. Создайте ссылки на gcc:

sudo rm -f / usr / bin / gcc

sudo rm -f / usr / bin / g ++

sudo ln -s /usr/bin/gcc-4.9 / usr / bin / gcc

sudo ln -s /usr/bin/g++-4.9 / usr / bin / g ++

  1. Перестройте модуль драйвера.

sudo apt-get --reinstall install fglrx-updates-core

После выполнения вышеуказанных шагов вы можете создать файл конфигурации следующим образом:

sudo aticonfig - initial

Этого достаточно, чтобы установить ubuntu 15.10 и AMD в любой из его разновидностей.

Предупреждение: пользователи Ubuntu GNOME 15.10 на ноутбуках. На данный момент я не исправлял и не перекомпилировал mutter для этой версии ubuntu, чтобы можно было установить драйвер, поэтому его использование в ноутбуках не рекомендуется.

17
20.03.2019, 14:58
2 ответа

Если каталог перемещен в пределах той же файловой системы (того же раздела ), то все, что необходимо, — это переименовать путь к файлу каталога. Никакие данные, кроме записи каталога для самого каталога, не должны быть изменены.

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

Перемещение каталога между файловыми системами потребует копирования данных в место назначения и их удаления из источника. Это займет примерно столько же времени, сколько копирование (дублирование )данных в одной файловой системе.


Если FileZilla успешно переименовала каталог с ~/big_folderна ~/some_other_folder/big_folder, я бы вернул это, используя

mv ~/some_other_folder/big_folder ~/big_folder

... предварительно убедившись, что нет каталога с именем ~/big_folder(, если он был, перемещение поместит big_folderиз some_other_folderв каталог ~/big_folderкак подпапку ).

70
27.01.2020, 19:46

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

open("hello1.txt", O_RDONLY)               = 3
open("hello2.txt", O_WRONLY|O_CREAT, 0644) = 4
read(3, "Hello, world!\n", 4096)           = 14
write(4, "Hello, world!\n", 14)            = 14
close(3)                                   = 0
close(4)                                   = 0

При этом открывается исходный файл, затем создается второй файл. Затем он считывает содержимое исходного файла в память и записывает эту память в целевой файл. Для этого требуется несколько переключений контекста и некоторый дисковый ввод-вывод, который может быть довольно высоким для больших файлов. Однако если вы переместите файл, вы увидите:

rename("hello1.txt", "hello2.txt")         = 0

Важно помнить, что вы увидите переименование файла только в том случае, если он находится в той же файловой системе на том же физическом диске. Если вы создадите огромный, много -гигабайтный файл, а затем переместите его между двумя местами в вашем доме, вы заметите, что действие завершается мгновенно. Если, с другой стороны, вы переместите его на внешнее устройство, это займет столько же времени, как если бы вы вместо этого использовали cp. Трассировка системного вызова будет идентична первой, но с unlink("hello1.txt")в самом конце. Это связано с тем, что переименование можно использовать для перемещения файла только в том случае, если источник и место назначения находятся в одной и той же файловой системе.

12
27.01.2020, 19:46

Теги

Похожие вопросы