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));
}
}