Application BackUp FTP

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Yrahen
Messages : 51
Inscription : sam. 01/sept./2012 4:14

Application BackUp FTP

Message par Yrahen »

Bonsoir les gens,

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
Biensur, il faut modifier les constantes Hote, User et Password.

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 :)
"L'imagination est plus importante que la connaissance."
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Application BackUp FTP

Message par Ar-S »

En ajoutant la date des documents tu as les prémices pour faire un CloudFTP.
J'ai pensé me faire ça mais j'ai pas trouvé le temps.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Yrahen
Messages : 51
Inscription : sam. 01/sept./2012 4:14

Re: Application BackUp FTP

Message par Yrahen »

CloudFTP? Je vois bien le cloud, le FTP, mais le melange des deux, tu le definirais comment?
"L'imagination est plus importante que la connaissance."
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Application BackUp FTP

Message par Ar-S »

Bien synchroniser un dossier ftp et un dossier en locale. Comme le ferait OneDrive.
ça permettrait de synchroniser des documents (perso le faire pour mes code PB par exemple) d'un PC à un autre.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Yrahen
Messages : 51
Inscription : sam. 01/sept./2012 4:14

Re: Application BackUp FTP

Message par Yrahen »

Ah d'accord.
C'est pas con comme idée de projet, je bosse souvent sur plusieurs pc ca me serait utile.
Bon bah je me pencherais dessus pendant mes vacances alors, je partagerais ca :)
"L'imagination est plus importante que la connaissance."
Répondre