Téléchargement de Sauvegardes avec WinSCP

Discussion dans 'Tutoriels' démarrée par François D, Jan 24, 2017.

  1. François D

    François D Member

    Voir d'abord le script ici pour que votre serveur fasse des sauvegardes :

    https://forums.planethoster.net/threads/sauvegardes-mysql-fichiers.4840/#post-18456

    Pour télécharger les sauvegardes du serveur sur l'ordinateur local avec WinSCP

    Ce qu'il faut :

    Le port SSH - Demander au support si vous ne l'avez pas.

    WinSCP : https://winscp.net/eng/download.php
    (Je suggère la version "portable")

    Dans WinSCP, établissez d'abord une connexion SFTP sur votre hébergement en sauvegardant le mot de passe (sinon, ce ne pourra être automatique). Acceptez la clé, etc.

    Dans le menu "Session" - Choisir : Generate Session URL/Code...


    [​IMG]

    Fermer la connexion/WinSCP

    Coller le contenu dans un éditeur de texte (Ex: Textpad)

    Entre la ligne "open" et la ligne "exit", ajouter les lignes suivantes en modifiant évidemment les adresses :

    Code:
    open..............
    
    # Place WinSCP dans le dossier de sauvegarde des Bases de données
    cd /home/USERCPANEL/backups/bdd
    
    # Place WinSCP dans le dossier de sauvegarde sur l'ordinateur local
    lcd M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\bdd
    
    # synchronise le dossier local - Télécharge les fichiers du serveur dans le dossier local
    synchronize local
    
    # supprime du serveur les fichiers plus vieux que 3 jour
    rm *<3D
    
    # Même chose pour les fichiers
    cd /home/USERCPANEL/backups/files
    lcd M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\files
    synchronize local
    rm *<3D
    
    # ... et les mails
    cd /home/USERCPANEL/backups/mail
    lcd M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\mail
    synchronize local
    rm *<3D
    
    exit
    
    Modifiez à votre convenance évidemment. Sauvegarder le fichier texte. Exemple M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\votrescript.txt

    Pour tester votre script, ouvrir une console de commande (Menu Windows, rechercher cmd.exe) et coller la ligne suivante (modifiée)
    Code:
    D:\ADRESSE_DE_WinSCP\WinSCP.exe /log="M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\backup.log" /ini=nul /script="M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\votrescript.txt"
    
    Note : On ne voit rien... ça se passe en arrière-plan.

    Vérifiez si vos sauvegardes ont bien été téléchargées.

    Si tout fonctionne, vous pouvez coller la ligne dans un raccourci. Ou ajouter une Tâche Planifiée dans windows en utilisant la même commande.
     
    David77 aime votre message.
  2. François D

    François D Member

    Pour voir la progression, utiliser le WinSCP.com au lieu du WinSCP.exe

    Dans un fichier texte, copier la commande:

    Code:
    D:\ADRESSE_DE_WinSCP\WinSCP.com /log="M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\backup.log" /ini=nul /script="M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\votrescript.txt"
    
    Sauvegarder le fichier en QUELQUECHOSE.bat
     
  3. François D

    François D Member

    Petit ajout qui permet de supprimer les sauvegardes locales qui sont plus vieilles de X Jours....

    Code:
    D:\ADRESSE_DE_WinSCP\WinSCP.com /log="M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\backup.log" /ini=nul /script="M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups\votrescript.txt"
    
    REM Effacer les vieilles sauvegardes locales (2017/04/28)
    forfiles -p "M:\DOSSIER_LOCAL_DE_SAUVEGARDE\backups" -s -m *.gz /D -60 /C "cmd /c del @path"
    
    Cette ligne effacera les fichiers *.gz plus vieux que 60 jours sur l'ordinateur local. Changez le -60 pour le nombre de jours désirés.
     
    Dernière édition: Avr 28, 2017
  4. MarcMarin

    MarcMarin Member

    merci, ce script fonctionne bien, toutefois je m'aperçois que j'ai un soucis à la décompression du tar.gz sous windows (tout essayé, gunzip sous DOS, 7-zip, ..), çà bloque. En fait si j'uploade à nouveau le fichier .gz sur le site et que j'essaye de le décompresser avec le cPanel, çà bloque aussi avec l'erreur:
    /home/user/backups/site/1.gz: 14.0% -- replaced with /home/user/backups/site/1

    curieusement le fichier perd son extension et passe de 842 Mo à 980 Mb. Cela bloque rapidement à 14%. Sous Windows cela bloque plutôt en fin de décompression (unexpected end of file)

    Comme le fichier tar.gz original sur le site (avant le download par synchronize local via WinSCP) se décompresse bien via cPanel, cela veut dire que WinSCP n'effectue pas correctement le download (pourtant affichée en binary).

    J'utilise souvent WinSCP pour l'upload de fichiers vers les sites de prod et je n'ai jamais de soucis au niveau d'un transfert même sur une vingtaine de sites à la fois. J'ai l'impression que c'est l'association du gz, notamment lorsque le fichier fait plusieurs centaines de méga que cela pose problème.

    Auriez-vous une idée à ce sujet

    merci d'avance










    [​IMG]
     
  5. François D

    François D Member

    Bonjour Marc,

    En local, ça semble fonctionner pour moi avec Winrar mais ma plus grosse sauvegarde est de 175Mo. Je n'ai pas de quoi tester un fichier de près de 1Go.

    D'après ce que vous dîtes, WinSCP semble vraiment être le coupable.

    Si vous utilisez le raccourci ci-haut, il y a un log créé par WinSCP et ce log mentionnerait peut-être qu'il y a eu une connexion perdue lors du téléchargement ou quelque chose qui indique que le transfert ne s'est pas complété.

    Sinon, peut-être essayer de télécharger la sauvegarde avec un Filezilla ou autre pour confirmer que WinSCP lâche la balle en cours de route. Je sais que Filezilla se coupe parfois sur les gros fichiers sans raison mais il "résume" et finit quand même le transfert correctement. (En général)

    Je vois deux ou trucs sur Google en lien avec le problème de gros fichier et WinSCP comme "Optimize connection buffer size", des choses comme ça mais la première chose serait de voir si le log indique quelque chose.

    A suivre...
     
  6. MarcMarin

    MarcMarin Member

    merci François pour toutes ces infos. Bon aujourd'hui çà a marché... 8-( donc dans le log, pas de message particulier, je ne sais pas d'ailleurs s'il y a une vérification au final du fichier uploadé. Ma version de Winscp est la 5.7.5. Je vois quelle a évolué, je vais donc effectuer une mise à jour. Ensuite si cela se reproduit je vais utilisé le paramètre /loglevel=2 qui semble fournir plus d'infos. Dans ma config le paramètre Optimize connection buffer size est coché mais je me demande si cette config est bien prise en compte aussi en mode script ou uniquement en mode interface windows.

    . 2017-05-04 10:49:18.422 Copying "/backups/site/mywebsite.tar.gz" to local directory started.
    . 2017-05-04 10:49:18.422 Binary transfer mode selected.
    . 2017-05-04 10:49:18.422 Début du téléchargement de /backups/site/mywebsite.tar.gz
    > 2017-05-04 10:49:18.422 TYPE I
    < 2017-05-04 10:49:18.422 200 TYPE is now 8-bit binary
    > 2017-05-04 10:49:18.422 PASV
    < 2017-05-04 10:49:18.422 227 Entering Passive Mode (146,88,233,104,172,90)
    > 2017-05-04 10:49:18.422 RETR mywebsite.tar.gz
    . 2017-05-04 10:49:18.437 Data connection opened
    < 2017-05-04 10:49:18.437 150-Accepted data connection
    < 2017-05-04 10:49:18.437 150 47931.8 kbytes to download
    . 2017-05-04 10:49:18.437 Data connection opened
    < 2017-05-04 10:49:22.720 226-File successfully transferred
    < 2017-05-04 10:49:22.720 226 4.275 seconds (measured here), 10.95 Mbytes per second
    . 2017-05-04 10:49:22.735 Data connection closed
    . 2017-05-04 10:49:22.735 Téléchargement réussi
    . 2017-05-04 10:49:22.735 Got reply 1 to the command 4
    . 2017-05-04 10:49:22.735 Transfer done: '/backups/site/mywebsite.tar.gz' [49082155]
    . 2017-05-04 10:49:22.735 Session upkeep
    > 2017-05-04 10:49:22.735 Script: close
    . 2017-05-04 10:49:22.735 Got reply 1004 to the command 4
    . 2017-05-04 10:49:22.735 Déconnecté du serveur
     
  7. MarcMarin

    MarcMarin Member

    Bonjour François,

    bon maintenant que tout fonctionne bien au niveau des transfert des l'ensemble des sites, se pose la problématique d'accumuler des sauvegardes en local même sur un disque dur externe, c'est pas top (vu la prolifération des ramsonwares en ce moment ;-). Je voudrai créer pour chaque site un compte Google Drive qui me laisse 15Go gratuit sur le cloud et uploader ces fichiers de sauvegarde (le must serait directement depuis Winscp...). Je vois sur le web plutôt des solutions de type ftp en java comme http://www.andresoviedo.org/google-drive-ftp-adapter/. Ca marche surement, après 1 jour d'installation de compléments, de build, d'exécution sous Apache, ou pas... 8-( je cherche une solution plus simple comme http://olivermarshall.net/how-to-upload-a-file-to-google-drive-from-the-command-line/ avec wget. Est-ce que vous auriez une solution à me conseiller ?

    merci d'avance
     
  8. François D

    François D Member

    La solution du dernier lien me semble plus facile à mettre en place et à utiliser (au bout de 5 minutes de lecture en tout cas) puisque ça reviendrait à ajouter quelques lignes à la batch file.

    En gros, la batch file appelle le script winscp qui télécharge les sauvegardes localement et ensuite, appelle ce bidule pour les envoyer sur google drive. Le bidule permet plusieurs configurations donc il devient possible d'envoyer FichierA vers GDriveA et FichierB vers GDriveB et ainsi de suite.
    https://github.com/prasmussen/gdrive#other (section Other, paramètre --config)

    Il faut préparer d'avance chaque compte mais une fois que c'est fait, la batch file peut probablement s'occuper du reste.
     
  9. David77

    David77 Member

    Juste à titre d'info, sur Mega (http://mega.nz) tu as 50Go gratuit ;)
     

Partager cette page