Backup simple en 100 lignes

Description

prog pour faire un backup copie toute une arborescence de fichiers vers un autre disque ( sans écraser ceux qui sont les meme que dans l'arborescense source )

lister les drives du systeme dans un combobox
faire un log des erreurs et l'afficher en fin de traitement

Source / Exemple :


'comment faire un backup en moins de 100 lignes de code sans fioritures 
Public Class Form1
    Dim x As Integer

    ''' <summary>
    ''' on charge les drives d
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            For x = 0 To My.Computer.FileSystem.Drives.Count
                ComboBox1.Items.Add(My.Computer.FileSystem.Drives.Item(x))
            Next
        Catch ex As Exception
        End Try
    End Sub

    ''' <summary>
    ''' c'est le coeur du programme srcdir est un répertoire
    ''' destDrive est un disque
    ''' </summary>
    ''' <param name="srcdir"></param>
    ''' <param name="destDrive"></param>
    ''' <remarks></remarks>
    Private Sub backup(ByVal srcdir As String, ByVal destDrive As String)
        Dim src, dest, log As String
        log = String.Empty
        For Each file As String In My.Computer.FileSystem.GetFiles(srcdir, FileIO.SearchOption.SearchAllSubDirectories, "*.*")
            src = file
            dest = Replace(file, IO.Path.GetPathRoot(srcdir), destDrive)
            Try
                If IO.File.Exists(dest) Then
                    If Date.Compare(My.Computer.FileSystem.GetFileInfo(src).LastWriteTime, My.Computer.FileSystem.GetFileInfo(dest).LastWriteTime) = 0 Then
                        'le fichier est le même à 99,999%
                    Else
                        'overwrite
                        My.Computer.FileSystem.CopyFile(src, dest, True)
                    End If
                Else
                    'copy
                    My.Computer.FileSystem.CopyFile(src, dest, False)
                End If

            Catch ex As Exception
                log = log & Now.ToShortDateString & " " & Now.ToLongTimeString & "." & Now.Millisecond & ex.Message & vbCrLf
            End Try

            If ProgressBar1.Value = 99 Then ProgressBar1.Value = 1

            ProgressBar1.Value = ProgressBar1.Value + 1
            Application.DoEvents()
        Next
        If log = String.Empty Then
            '  MsgBox("Pas d'erreurs", MsgBoxStyle.Information)
        Else
            My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\" & Today.ToLongDateString & ".log", log, True)
            If MessageBox.Show("il y a eu des erreurs," & vbCrLf & "voulez vous voir le log maintenant?", Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Error) = Windows.Forms.DialogResult.Yes Then
                Process.Start("notepad.exe", Application.StartupPath & "\" & Today.ToLongDateString & ".log")
            End If

        End If
    End Sub

    ''' <summary>
    ''' pour sélectionner la source du backup 
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim fdb As New FolderBrowserDialog
            If fdb.ShowDialog = Windows.Forms.DialogResult.OK Then
                Label1.Text = fdb.SelectedPath
                Label2.Text = Replace(Label1.Text, "C:\", ComboBox1.SelectedItem.ToString)
            End If

        Catch ex As Exception
            Label2.Text = "Selectionner un drive et recommencer"
        End Try
    End Sub
    ''' <summary>
    ''' c'est parti maintenant qu'on a toutes les infos
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ProgressBar1.Style = ProgressBarStyle.Marquee
        ProgressBar1.Value = 1
        backup(Label1.Text, ComboBox1.SelectedItem.ToString)
        ProgressBar1.Style = ProgressBarStyle.Blocks
        ProgressBar1.Value = 100
    End Sub
End Class

Conclusion :


vraiment très simple mais peut s'averer aussi très utilse

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.