SSH.NET SftpClient: копировать / дублировать SftpFile

Есть ли способ скопировать файл в другой каталог, например, копировать / вставить..MoveTo() метод переместить только SftpFile и я попытался WriteAllBytes() метод с использованием SftpFile.Attribues.GetBytes(), но пишет всегда поврежденный файл.

Спасибо

2 ответа

Вы вряд ли сможете скопировать файл напрямую. Для получения подробной информации, почему:
Можно ли в сеансе SFTP скопировать один удаленный файл в другое место на том же удаленном сервере SFTP?


Таким образом, вы должны загрузить и повторно загрузить файл.

Самый простой способ сделать это (без создания временного локального файла):

SftpClient client = new SftpClient("exampl.com", "username", "password");
client.Connect();

using (Stream sourceStream = client.OpenRead("/source/path/file.dat"))
using (Stream destStream = client.Create("/dest/path/file.dat"))
{
    sourceStream.CopyTo(destStream);
}

Вот как скопировать удаленный файл в новый:

using (var sftp = new SftpClient(host, username, password))
{
  client.Connect();

  using (Stream sourceStream = sftp.OpenRead(remoteFile))
  {
     sftp.UploadFile(sourceStream, remoteFileNew));
  }
}
Другие вопросы по тегам