J'ai un compte d'hébergement partagé et je veux créer un fichier Zip (ou un autre type d'archive) à partir de l'ensemble du site.
J'ai demandé au support d'hébergement mais ils ne le font pas.
Existe-t-il un script php ou Asp.Net qui crée une archive à partir d'un dossier dans lequel je peux vérifier l'état de la compression, pour savoir qu'elle est en cours d'exécution et non gelée.
Mon serveur utilise Windows Server 2003 et IIS6 avec le panneau de contrôle de Plesk 8.6.
Ne pouvez-vous pas télécharger tous les fichiers via FTP, puis utilisez votre ordinateur pour les mettre dans un fichier .Zip? Cela semble être le seul moyen d'obtenir les fichiers. Si vous avez cPanel, je pense qu’il existe déjà un outil pour télécharger une sauvegarde du site au format .Zip.
La plupart des fournisseurs d'hébergement géré effectuent des sauvegardes quotidiennes pour vous. Vous devriez pouvoir simplement leur demander l'une des sauvegardes.
Si vous utilisiez un serveur * nix, vous pouvez simplement utiliser tar
pour créer une archive tar.gz
à la racine de votre application. Si l'archivage ne prend que 2 à 3 secondes, la barre de progression n'a pas beaucoup de sens. Si cela prend plus de temps, vous pouvez utiliser les options --list
/--index-file
ou --verbose
pour afficher les fichiers/répertoires en cours d'archivage. Ou vous pouvez utiliser --checkpoint
ou --block-number
pour voir les numéros d’enregistrement/bloc traités.
Mais contrairement aux téléchargements, la progression de la compression n'est pas assez linéaire pour afficher avec précision le pourcentage de progression. Au mieux, vous pouvez tilisez pv pour suivre le nombre d'octets d'entrée traités par rapport à la taille totale d'entrée , mais la barre de progression peut passer de 0% à 90% en 5 secondes, puis il ne vous reste que 5 minutes. de 90% à 100%.
De plus, ce n’est pas comme si le pourcentage de progression importait vraiment - ce n’est pas comme si vous décidiez de suspendre ou d’annuler la compression. Savoir qu'il progresse et n'a pas gelé est plus important. Et cela peut être facilement réalisé en utilisant le commutateur --list
pour fournir une sortie en direct des fichiers traités. Vous pouvez accomplir tout cela avec quelques lignes de PHP et de JS.
Si vous souhaitez une indication plus précise de la progression, vous devrez alors enregistrer le temps requis pour archiver le site la dernière fois et prévoir le temps nécessaire en fonction de la taille du répertoire actuel. En supposant que la distribution des types de fichiers et des caractéristiques de données n'ait pas changé de manière significative, vous pourrez peut-être obtenir des estimations assez précises. Vous pouvez également aller plus loin et décrire les caractéristiques de compression (vitesse/ratio) de types de fichiers spécifiques et utiliser cette distribution ainsi que la distribution des types de fichiers de votre application pour calculer la progression.
J'ai utilisé le SharpZipLib
avec VB.NET (ou C #) avec un exemple d'application de leur site Web qui crée un fichier tar.gz
à partir d'un répertoire.
http://wiki.sharpdevelop.net/GZip-and-Tar-Samples.ashx
Il n'a pas de barre de progression, mais je peux vérifier s'il est complet ou gelé en vérifiant la taille du fichier tar.gz
via ftp.