Я запускаю сценарий Bash под Cygwin, но этот вопрос применим в более широком смысле.
У меня есть удаленный файл: //someremoteserver/somefile.db
Этот путь «//» находится в Cygwin - по сути, это путь UNC в сети Windows (в данном случае), поэтому назовите его Samba.
Файл большой: 50 ГБ.
Я хочу переименовать все это на удаленном конце:
mv //someremoteserver/somefile.db //someremoteserver/someotherfile.db
Я бы хотел, чтобы это заняло 5 наносекунд, потому что это просто переименование. Но на это нужно два часа. Похоже, это связано с тем, что он фактически копирует файл через пространство памяти локального компьютера - он перемещает 50 ГБ по локальной сети (или, возможно, даже 100 ГБ, если он копирует здесь, копирует туда).
Обычно в локальной системе "mv" выполняется мгновенно, независимо от размера файла, потому что он только обновляет таблицу inode / file.
Есть ли хороший способ сделать то же самое, когда файл находится на удаленном общем ресурсе Samba?
Обычно в локальной системе "mv" выполняется мгновенно, независимо от размера файла, потому что он только обновляет таблицу inode / file.
Именно. Я полагаю, вы захотите вызвать rename / mv с хоста, содержащего файловую систему.