Synchronisation de dossier

Synchronisation de dossier - VB/VBA/VBS - Programmation

Marsh Posté le 28-04-2018 à 21:52:54    

Bonsoir
 
je cherche une solution pour synchroniser 2 répertoires
 
le premier sur C:monrepsource....
le second sur un serveur T:monrepdestination    
 
pour la destination je préfère que le script accepte \servermonrepdestination    
car tous les utilisateurs non pas forcément la même lettre
 
je voudrais que ce soit automatique pour que je puisse le lancer via des taches planifiées, donc exit les vbs qui me demande la source et destination
 
et il faudrait aussi que les sous-répertoire soit pris en compte
 
quelqu'un a cela, en VBS ou VBA ?
 
 
 
j'ai trouvé celui ci, mais il tourne en boucle, écrit et ré-efface
mais j'ai 30go, donc ca va pas le faire sans adaptation

Code :
  1. 'Synchronizes one folder to another using the xcopy command.
  2. 'INSTRUCTIONS: Copy FolderSync.vbs to the Startup menu in Windows.
  3. ' Set SourceFolder to reference the location on your computer.
  4. ' Set TargetFolder to reference the location to copy files to.
  5. ' Adjust scan time to a desired level. 3 seconds (3000) is default.
  6. ' More time may reduce system lag or HDD lag, less time will make
  7. ' files more quickly available.
  8. Dim SourceFolder: SourceFolder = "F:DCIM"
  9. Dim TargetFolder: TargetFolder = "H:" '\servershare also works
  10. Dim ScanTime: ScanTime = 3000
  11. 'Do not edit
  12. Dim retval: retval = 0
  13. Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject" )
  14. Set wshShell = WScript.CreateObject ("WSCript.shell" )
  15. While retval = 0
  16.     retval = wshshell.run("%windir%system32xcopy.exe """&SourceFolder&"*.*"" """&TargetFolder&""" /d /y /s", 0, True)
  17.     CheckDeletions TargetFolder,TargetFolder, SourceFolder
  18.     WScript.Sleep(ScanTime) 'milleseconds
  19. Wend
  20. set wshshell = Nothing 'it will never get here.
  21. Sub CheckDeletions(Target, TargetFolder, SourceFolder)
  22.     Set Folder = objFSO.GetFolder(Target)
  23.     'check if source folder exists
  24.     If Not objFSO.FolderExists(Replace(Folder.Path,TargetFolder,SourceFolder)) Then
  25.         Folder.Delete True 'delete folder because it doesn't exist in the source
  26.     Else 'check within the folder
  27.     For Each Subfolder in Folder.SubFolders
  28.         CheckDeletions Subfolder.Path,TargetFolder,SourceFolder
  29.     Next
  30.     'get the files in the folder
  31.     Set colFiles = Folder.Files
  32.     For Each objFile in colFiles
  33.         If Not objFSO.FileExists(Replace(objFile.Path,TargetFolder,SourceFolder)) Then
  34.             objFile.Delete True 'delete file because it doesn't exist in the source
  35.         End If
  36.         Next
  37.     End If
  38. End Sub

Reply

Marsh Posté le 28-04-2018 à 21:52:54   

Reply

Marsh Posté le 08-05-2018 à 10:05:54    

Bonjour,
 
cette fonction en VBScript va demander un peu (!) de code, et sinon Robocopy sait faire cela de façon optimale en une ligne de commande.


Message édité par steph78630 le 08-05-2018 à 10:11:23

---------------
"L'erreur est humaine mais un véritable désastre nécessite un ordinateur." de William Henry, dit Bill Gates
Reply

Marsh Posté le 08-05-2018 à 16:59:42    

depuis que j'ai posté, j'ai testé d'autres solutions
ce que je voulais est une solution portable, légère
 
j'ai trouvé FreeFileSyncPortable, qui me semble pas mal
forcément plus lourd qu'un simple VBS, mais compréhensible par tous, et visuel
l'edition d'un VBS par un utilisateur lamba, c'est pas l'idéal
 
https://www.portablefreeware.com/screenshots/scrwvMfYh.gif
 
robocopy, il faut l'installer, cela ne me vas pas

Reply

Marsh Posté le 08-05-2018 à 18:33:21    

daniel-12 a écrit :

robocopy, il faut l'installer, cela ne me vas pas


 
Daniel, je me souviens en effet qu'il fallait l'installer à partir du Resource Kit (cf. NT 4.0 / W2k) cependant depuis Windows Vista, Robocopy ne s'installe plus car intégré à l'installation de Windows (natif en ligne de commande).
 
Si je puis me permettre, ça me semble difficile de faire plus léger et performant (options miroir, incrémental, purge des fichiers orphelins, compression, etc.), mais pas de soucis l'essentiel est que vous ayez trouvé une solution qui vous convienne.
 
Bien cordialement, Stéphane


Message édité par steph78630 le 08-05-2018 à 18:42:52

---------------
"L'erreur est humaine mais un véritable désastre nécessite un ordinateur." de William Henry, dit Bill Gates
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed