2017-08-10 5 views
1

J'ai cherché beaucoup et googlé beaucoup aussi, mais je ne trouve rien ...de script Bash: obtenir la taille du dossier par FTP

J'utilise bash sur linux ...

Je pour télécharger un certain dossier à partir d'un serveur FTP (je sais que ftp est obsolète, ne peut pas utiliser ftps ou sftp en ce moment parce que je suis dans un réseau local). Je veux faire une sorte de vérification de l'intégrité du dossier téléchargé, qui a beaucoup de sous-dossiers et de fichiers, donc je choisis de comparer la taille du dossier comme un test. Je télécharge via wget mais ma question est ... comment puis-je vérifier la taille du dossier avant de le télécharger afin que je puisse stocker la taille dans un fichier, puis comparer avec le téléchargé? Ftp, alors ...

J'ai essayé avec une simple boucle dans le répertoire parent, mais il n'y a pas d'information de taille ... il

Merci pour l'aide !!

+0

thnx à Vitaliy! fini par faire mkdir/root/fs curlftpfs ftp: // UTILISATEUR: MOT DE PASSE @ HÔTE// root/fs du -ksh/root/fs/FOLDER | awk 'BEGIN {FS = ""} {print $ 1}' –

Répondre

1

Vous ne pouvez pas vérifier la taille du dossier via le protocole FTP. Essayez de connecter le dossier distant sur le serveur principal via curlftpfs (si possible).

+0

est-il possible de l'utiliser dans un script? besoin de faire cela automatiquement .. sans interaction –

+0

grand, résolu ty –

0

wget télécharge récursivement tout le contenu du répertoire un à la fois. Il n'y a aucun moyen de déterminer la taille d'un répertoire entier en utilisant ftp. Bien qu'il soit possible d'utiliser ssh.

Je recommande d'installer le serveur ssh sur votre machine et après avoir obtenu un accès, vous pouvez utiliser la commande suivante pour obtenir la taille du répertoire souhaité:

du -h desired_directory | tail -n 1 

Je ne recommande pas cette méthode cependant, il est plus fiable pour obtenir la somme de contrôle de hachage du contenu distant et les comparer avec votre contenu téléchargé. C'est beaucoup plus fiable et il est déjà utilisé par de nombreux clients de téléchargement pour vérifier l'intégrité des fichiers.

+0

besoin d'être automatique, c'est le problème, et plus ssh sur ce serveur n'est pas possible car il a une étrange façon de se connecter via ssh, il est derrière un environnement de cloud –

+0

Il est en fait possible d'automatiser les sessions ssh et ftp en utilisant quelque chose comme "Expect". Qu'entendez-vous exactement par "environnement cloud" et "manière étrange"? – Samy

+0

Je veux dire que dans cet environnement de cloud, vous accédez à un serveur ssh frontal et ensuite il vous redirige vers l'environnement spécifique que vous voulez (manuel choisir) engendrant un nouveau shell aussi .. –

0

Cela dépend essentiellement de ce que votre client ftp et votre serveur ftp peuvent faire. Avec un peu je sais, la valeur par défaut ls fait le travail et ils ont même une commande size:

ftp> help size 
size   show size of remote file 
ftp> size foo 
213 305 
ftp> ls foo 
200 PORT command successful. 
150 Opening ASCII mode data connection for file list 
-rw-r--r-- 1 foo bar  305 Aug 1 2013 foo 
226 Transfer complete.