Я знаю, что использование scp через SSH скопирует файлы между хостами, но что если я не хочу копировать их, а переместить их полностью?

Какую команду я могу использовать, используя безопасное соединение через SSH или другим способом?

Спасибо!

1 ответ1

2

Нет такой вещи как "движение".

В одной файловой системе вы можете "переместить" файл, переименовав его; сам файл остается на месте, но новое имя добавляется, а старое удаляется (это тоже не обязательно является атомарным - если существуют и "a", и "b", то вызов mv a b может очень кратко иметь оба имени обратитесь к тому же файлу "а", прежде чем это старое имя исчезнет).

Чтобы переместить файл из одного места в другое в общем случае, вам нужно создать файл с новым именем, скопировать в него данные и затем удалить старый. На локальном компьютере, но с разными файловыми системами, команда "mv" делает это за вас - вы можете убедиться в этом, запустив strace mv a /other/filesystem/b .

Чтобы сделать это между компьютерами без общей сетевой файловой системы, вы должны сделать это шаг за шагом самостоятельно, например, scp a otherhost:/path/to/new/a && rm a (амперсанды означают, что локальный файл удаляется только если scp удалось, что означает, что весьма вероятно, что удаленная копия была сделана успешно).

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