Назад | Перейти на главную страницу

Как sftp заменяет файлы?

Например, у меня есть статический http-сервер. Я работаю с файлами .js через sftp. Сохранение их синхронизации. Мне интересно, заменяется ли файл .js мгновенно или сервер stfp будет записывать в этот файл как поток?

Так например:

или

Для меня это лучший сценарий.

Нет времени проверять, как это работает. Любое объяснение было бы хорошо.

Это не функция протокола. SFTP (как подпротокол / подсистема SSH) не решает, перезаписывать ли ваши файлы на месте или через временный файл, сервер выполняет только команды, отправленные клиентом. Так что весь этот вопрос следует рассматривать с точки зрения клиента.

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

  • sftp просто загрузит и перезапишет ваши файлы на месте
  • rsync через SSH можно загружать файлы с временными именами, а затем удалять старый файл и переименовывать вновь загруженный (лучший вариант)
  • В мире Windows существует множество клиентов SFTP, которые могут загружать с использованием временных имен и удалять / перезаписывать, вероятно, наиболее распространенным и известным из них является WinSCP

scp и sftp заменит файл на месте, так что да, теоретически HTTP-клиент может попытаться получить частично загруженный файл.

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