Il y a une semaine, suite a la suppression malencontreuse du contenu de mon serveur ftp, je me suis dit "Tiens, un code pour faire des backup ca pourrait etre sympa.".
Du coup je me permet de poster ici le code créé pour l'occasion. La base du code a été trouvé sur le forum anglais, je l'ai un peu adapté a mes besoins.
Code : Tout sélectionner
InitNetwork() : OpenConsole()
Macro Afficher(Texte) : PrintN(Texte) : EndMacro
Macro Exclure(Rep) : AddElement(Exclusion()) : Exclusion()=Rep : EndMacro
Global NewList ftpFile.s() : Global NewList Exclusion.s() : Global Repertoire$
Repertoire$=FormatDate("%dd-%mm-%yyyy", Date())
#FTP=1
;
; A remplir
;
#Hote$="ftp.trucmuch" : #User$="machinchose" : #Password$="motdepasse"
;
; Dossiers qui seront exclus a l'exploration
;
Exclure(".") : Exclure("..") : Exclure("error")
Procedure Explore(dir.s)
Protected NewList DirectoryFTP.s()
Afficher("-"+dir)
CreateDirectory(Repertoire$+dir)
SetFTPDirectory(#FTP, dir)
If ExamineFTPDirectory(#FTP)
While NextFTPDirectoryEntry(#FTP)
If FTPDirectoryEntryType(#FTP) = #PB_FTP_File
AddElement( ftpFile() )
ftpFile() = dir + FTPDirectoryEntryName(#FTP)
Afficher(" "+ftpFile())
ReceiveFTPFile(#FTP,ftpFile(),Repertoire$+ftpFile())
ElseIf FTPDirectoryEntryType(#FTP) = #PB_FTP_Directory
Exclu=0
ForEach Exclusion()
If FTPDirectoryEntryName(#FTP)=Exclusion() : Exclu=1 : EndIf
Next
If Exclu=0
AddElement( DirectoryFTP() )
DirectoryFTP() = dir + FTPDirectoryEntryName(#FTP) + "/"
EndIf
EndIf
Wend
EndIf
ForEach DirectoryFTP() : Explore(DirectoryFTP()) : Next
EndProcedure
If OpenFTP(#FTP,#Hote$,#User$,#Password$)
Afficher("---") : Afficher("Debut de la sauvegarde") : Afficher("---")
CreateDirectory(Repertoire$)
Explore("/")
CloseFTP(#FTP)
Afficher("---") : Afficher("Fin de la sauvegarde") : Afficher("---")
Input()
Else
Afficher("Impossible de se connecter au FTP.")
EndIf
End
Pour ce qui est des Exclure("XXX"), ca permet de ne pas rechercher dans certains repertoires. Dans mon exemple, mon hebergeur me colle automatiquement un dossier "error" qui contiendra des fichiers dont je me fou completement.
Je sais pas si ce code va servir a quelqu'un, c'etait surtout histoire de partager