我需要每个月从客户端的服务器将大型备份文件提取到我的服务器

时间:2010-02-19 11:53:08

标签: sql-server file ftp backup transfer

我有客户在那里运行SQL Server Express 2005,并且每个客户每个月都需要备份,并且需要将备份移动到我们的服务器以防丢失备份。我们的软件每个月都会自动备份数据库,但我们必须手动进入并复制它。有没有什么方法可以使用FTP每月自动将高达800兆的文件从他们的机器复制到我们的?此外,如果使用FTP,它必须支持简历,以防我们失去连接三个排序器经常发生。我想将此功能写入我们的VB.net应用程序,该应用程序只需要.net框架而不使用任何第三方控件。

3 个答案:

答案 0 :(得分:2)

我认为如果您使用RSync之类的东西而不是本土解决方案,那么这就是您的最佳选择。

答案 1 :(得分:0)

无论是WebClient类还是(Ftp)WebRequest / WebResponse系列类都可以使用它 - 如果需要,我可以给你一些示例代码 - 除非你有一些特定的商业案例来推销自己像RSync这样的东西是更好的选择。

EDIT;

WebClient路由是最简单的,但它不会给你太多控制权;

Imports System.Net
...
Dim Client As New WebClient
Client.DownloadFile("ftp://ftp.example.com/Database.bak", "D:\Backups\Database.bak")

如果你想要更多控制,并管理FTP简历,那么这样的事情就可以了;

Public Sub TransferFile(ByVal SourcePath As String, ByVal DestinationPath As String)

    Dim SourceRequest As FtpWebRequest

    Dim Buffer(4095) As Byte
    Dim BytesRead As Integer

    ' Assumes source is on FTP server...
    SourceRequest = DirectCast(WebRequest.Create(SourcePath), FtpWebRequest)
    SourceRequest.Method = WebRequestMethods.Ftp.DownloadFile

    ' If we already have a local file, then resume from the end of it...
    SourceRequest.ContentOffset = If(File.Exists(DestinationPath), New FileInfo(DestinationPath).Length, 0)

    ' Assume destination file is local/UNC file. FileMode.Append will create a new file if one doesn't exist.
    Using DestinationFile As New FileStream(DestinationPath, FileMode.Append, FileAccess.Write, FileShare.None)
        Using SourceResponse As WebResponse = SourceRequest.GetResponse()
            Using SourceStream As Stream = SourceResponse.GetResponseStream()

                Do

                    BytesRead = SourceStream.Read(Buffer, 0, Buffer.Length)
                    DestinationFile.Write(Buffer, 0, BytesRead)

                    ' Calculate speed, progress, show to user/log, etc...

                Loop While BytesRead > 0

            End Using
        End Using
    End Using

End Sub

这假设您正在从FTP转移 - >本地。用户名/密码可以像SourcePath一样提供; ftp://username:password@ftp.mysite.co.uk

希望这有帮助。

答案 2 :(得分:0)

另一种选择是使用像SyncBack这样的程序,它支持跨FTP的同步,可以安排每天/每周/每月运行,并且多年来一直帮我做你正在谈论的事情。我不确定恢复FTP传输 - 但它可以很好地通过FTP备份。