Конечно, ssh лучше.
Nfs использует сложный сетевой протокол с различными удаленными вызовами процедур и временем ожидания синхронизации данных. В случае ssh они не применяются.
Кроме того, здесь много замков. Удаление файлов в nfs работает так:
rm
дает системный вызов unlink()
unlink()
unlink()
вызов на удаленной стороне unlink()
исходногоrm
rm
переход к следующему файлу, переход к 1 Сейчас важно:между 2 -7, rm
нужно подождать. Он может отправлять следующий unlink()
вызов асинхронно, но это однопоточный -, а не событийно-ориентированный инструмент -. Даже если бы это было возможно, все равно потребовались бы хитрые флаги монтирования nfs. Пока он не получит результат, он ждет.
Nfs -и любая сетевая файловая система -всегда намного медленнее.
Во многих случаях вы можете сделать рекурсивное удаление почти -бесконечной скоростью с помощью хитрости:
mv -vf oldfilms oldfilms-
)rm -rf oldfilms- &
)С точки зрения многих (, но не всех )аспектов, это удаление каталога будет выглядеть так, как будто это произошло практически в нулевое время.
Расширение:Как отмечает @el.pascado в своем превосходном комментарии, на самом деле 2 -7 должно выполняться 3x для любых файлов:
lstat()
), unlink()
, в случае каталогов opendir()
, удаление всех файлов/каталогов в нем рекурсивно, затем closedir()
, наконец rmdir()
. readdir()
. Это требует 3 RPC-команд nfs для файлов и еще 3 для каталогов.
Существует пакет под названием haveged, который служит именно этой цели.