1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
'Récupération des noms dans la table annuaire
Set oRst = New ADODB.Recordset
oRst.Open "select distinct a.nom_pc as nom_pc from annuaire a left join logs l on a.nom_pc=l.nom_pc and l.etat=0 order by l.id_sequence, a.nom_pc", oCnx
oRst.MoveFirst
compteurSucces = 0
While Not (oRst.EOF) And compteurSucces < limitSauvegarde
oNom = oRst("nom_pc")
'Interrogation de la machine
If Ping(oNom, sIP) Then
'Instanciation de l'objet
Set oFSO = New Scripting.FileSystemObject
If oFSO.FolderExists("\\" & oNom & Rep_partage) Then
'Montage du dossier partagé
Set oFld = oFSO.GetFolder("\\" & oNom & Rep_partage)
'---Comparaison avec la table détails_backup---
'Définition des états par défaut(Pas de sauvegarde nécessaire + Reset Compteur fichier)
Etat_sauvegarde = 4
compteurFichier = 0
For Each oFl In oFld.Files
compteurFichier = compteurFichier + 1
'Définition du Répertoire de sauvegarde des pst, sur le serveur
oRep = Rep_sauvegarde
oName = oFl.Name
oSize = oFl.Size
oDate = oFl.DateLastModified
oAcces = oFl.DateLastAccessed
oAttrib = oFl.Attributes
'MsgBox "size : " & oSize & " oDate : " & oDate
'Récupération des noms dans la table details_backup
Set oRst2 = New ADODB.Recordset
oRst2.Open "SELECT fichier, taille, date_maj FROM details_backup WHERE nom_pc ='" & oNom & "' AND fichier ='" & oName & "' AND taille='" & oSize & "' AND date_maj='" & oDate & "'", oCnx
If oRst2.EOF Then
If Not oFSO.FolderExists(oRep & oNom) Then
oFSO.CreateFolder (oRep & oNom)
End If
'Test pour exclure les fichiers avec un "~" ou ".tmp"
If InStr(oName, Chr(126)) = 0 Or InStr(oName, ".tmp") = 0 Then
'Test d'existence du fichier dans le répertoire de sauvegarde
If oFSO.FileExists(oRep & oNom & "\" & oName) Then
oFSO.DeleteFile oRep & oNom & "\" & oName, True
End If
On Error GoTo errcopy
FileCopy "\\" & oNom & Rep_partage & oName, oRep & oNom & "\" & oName
'Insertion dans la base (détails du fichier sauvegardé)
strSQL = "INSERT INTO details_backup SET nom_pc='" & oNom & "', id_sequence='" & Seq_actual & "',fichier='" & oName & "', taille='" & oSize & "', date_backup=Now(), date_maj='" & oDate & "'"
oCnx.Execute strSQL
'Incrementation du compteur succès
compteurSucces = compteurSucces + 1
'Changement d'etat(Sauvegarde à jour)
If Etat_sauvegarde <> 5 Then
Etat_sauvegarde = 0
End If
End If
End If
GoTo FinBoucle
errcopy:
MsgBox "Erreur de Copie"
Etat_sauvegarde = 5
FinBoucle:
MsgBox "Fin Boucle"
Next oFl
If compteurFichier = 0 Then
'Changement d'etat (pas de fichier dans le répertoire partagé)
Etat_sauvegarde = 3
End If
Else
'Changement d'etat (répertoire non partagé ou inexistant)
Etat_sauvegarde = 2
End If
Else
'Changement d'etat (pas de réponse du pc)
Etat_sauvegarde = 1
End If
'Insertion dans la base logs
strSQL = "INSERT INTO logs SET nom_pc='" & oNom & "', id_sequence='" & Seq_actual & "', etat='" & Etat_sauvegarde & "'"
oCnx.Execute strSQL
oRst.MoveNext |
Partager