web-dev-qa-db-fra.com

Comment écrire un script shell pour déplacer des fichiers du serveur FTP vers le lecteur de partage réseau

J'ai des clients qui téléchargent de grandes quantités de données sur mon serveur FTP (une machine Ubuntu 9.10). Une fois les fichiers téléchargés, je suis confronté à leur transfert vers un lecteur réseau local Droboshare afin que notre personnel de support technique puisse les récupérer et analyser le problème.

Après avoir monté le partage réseau sur /media/<sharename> J'exécute cette commande manuellement pour obtenir ces fichiers:

Sudo mv /home/ftp/<data_dir>/<file_name> /media/<network_share>/<ftp_user_data>

mais cela prend une éternité et s'il y a des dizaines ou des centaines de fichiers, je ne peux pas le faire de façon réaliste encore et encore. Je pensais que ce serait bien d'avoir un script que je pourrais exécuter périodiquement pour transférer un groupe de ces fichiers sur le partage réseau. Je peux les trier au fur et à mesure que le support technique les utilise.

Je suis encore nouveau sur Linux et j'écris des scripts Shell. Quoi qu'il en soit pour le faire facilement? Juste pour ajouter à la description ici, les fichiers peuvent être fichiers Zip, fichiers FASTA, fichiers TAR.GZ, et/ou Fichiers TXT. De plus, si les fichiers Zip sont volumineux, certains programmes de fermeture éclair les convertissent en Zip.001, Zip.002, Zip.0, etc. .. Le type de fichier dans ce répertoire FTP pourrait donc être assez varié.

Je pensais que la façon dont je peux identifier ces fichiers est simplement de transférer TOUS les fichiers dans le répertoire (bien que cela puisse prendre un certain temps) ou de désigner quelque peu un sous-ensemble de ceux-ci, selon le temps écoulé ou quelque chose comme ça.

Je suis ouvert aux idées. Merci d'avance.

1
nicorellius

Pourquoi ne pas simplement faire du dossier FTP le point de montage réel du lecteur réseau? Je rencontre un problème similaire où je sauvegarde constamment VirtualMachines sur une machine Linux sur un partage réseau Windows (car la majorité de l'infrastructure de l'entreprise est Windows). Voici ma structure:

/media/windows-share est mon point de montage

Pour la continuité, j'ai créé un lien symbolique dans mon application de sauvegarde:

/opt/backup/mnt donc si le point de montage change à l'avenir, mon programme n'a pas besoin d'une mise à jour.

Enfin, j'utilise un petit outil sympa appelé autofs (Sudo apt-get install autofs) Ce guide est décent (et à jour) - bien que j'aie utilisé cela avec une approche légèrement différente sur mon blog .

Dans votre cas, je créerais un lien symbolique où se trouve ma boîte de dépôt FTP (/home/ftp/<data_dir>/) dans le dossier réseau approprié dans /media/<network_share>/<ftp_user_data> de cette façon, il n'y a pas de temps perdu à transférer sur plusieurs disques et les fichiers sont disponibles immédiatement.

5
Marco Ceppi

Pour la duplication de fichiers d'ici à là (ou là-bas), rsync est une tronçonneuse de l'armée suisse qui fera probablement ce que vous voulez.

4
msw

Vous pouvez essayer de traiter les fichiers dès qu'ils sont téléchargés sur le FTP, en utilisant une technologie telle que inotify. inoticoming est un outil que vous pouvez utiliser pour cela, voir http://manpages.ubuntu.com/manpages/lucid/man1/inoticoming.1.html .

1
ℝaphink