web-dev-qa-db-fra.com

Combinant robocopy avec ftpuse

Nos clients doivent transférer des fichiers spécifiés de leur réseau à la nôtre via FTP. Le transfert doit être invoqué automatiquement chaque fois que l'un des fichiers spécifiés change. À cette fin, Robocopy est parfait. Cependant, Robocopy ne prend pas en charge le transfert vers des adresses FTP. Donc, je voudrais mapper notre site FTP à une lettre de lecteur sur le serveur client. J'ai trouvé cela FTPUSE est parfait pour mapper un FTP à une lettre de lecteur. Le mappage fonctionne comme prévu et je peux voir le contenu du site FTP dans Windows Explorer - je peux également écrire des données sur le lecteur FTP mappé.

Donc, disons que j'ai mappé le site FTP pour conduire Q sur ma machine locale avec cette commande:

ftpuse Q: [ftp address] [password] /USER:[username]

Et essayez de configurer Robocopy avec cette commande:

robocopy [source dir] Q:\ *.xls *.xlsx /COPY:DAT /LOG+:"[LogDir]\FtpCopyLog.txt" /V /NP /MON:1 /MOT:1 /R:10 /W:30 

Lorsque Robocopy est exécuté, il échoue avec le message d'erreur suivant:

Erreur 87 (0x00000057) Fichier de copie [Source Dir]\Test2.xlsm Le paramètre est incorrect

J'ai essayé de cartographier le lecteur et d'exécuter la commande Robocopy sous le compte d'utilisateur Samme, mais il ne semble pas résoudre le problème.

J'espère que quelqu'un peut aider.

Toute aide serait grandement appréciée.

7
user1632306

Essayez d'utiliser WINSCP en mode miroir. WINSCP peut être téléchargé à partir d'ici:

http://winscp.net/fr/download.php

À l'aide de WINSCP, vous n'aurez pas besoin de cartographier un lecteur, il se connecte simplement à FTP directement et effectue le travail pour vous.

Voici un petit script de chauve-souris qui rend cela similaire à Robocopy.

Attention à: J'ai ajouté l'option -Delete qui supprime les fichiers distants qui ne correspondent plus au dossier local. Des citations doubles sont nécessaires car il y a des espaces dans le chemin local.

set FTPSERVER=v2008  
set FTPUSER=username  
set FTPPASS=password  
set FTPLOCALE=C:\Users\User\Desktop\Local folder  
set FTPREMOTO=/public  
winscp.com /command "open ftp://%FTPUSER%:%FTPPASS%@%FTPSERVER%/" ^
  "synchronize remote -delete ""%FTPLOCALE%"" %FTPREMOTO%"
3
anuff

Depuis que vous utilisez déjà Windows, pourquoi ne pas utiliser l'alimentation pour le faire? Vous pouvez spécifier uniquement de nouveaux fichiers et planifier la tâche avec le planificateur de tâches Windows avec tous avec des outils intégrés Windows. Pas besoin de payer pour la fonctionnalité intégrée. Je suppose que ce n'est pas une connexion FTP sécurisée que votre utilisation. Certains scripts rapides vous obtiendront une solution bon marché très flexible. J'ai plusieurs scripts shell de puissance qui tirent et poussent la base de fichiers FTP sur des critères spécifiques.

0
pehaada

Lorsque la copie vous exécute, vous avez la permission de créer des fichiers mais de ne pas les écraser. Quelle est la taille des fichiers? D'après ce que je rassemble à chaque fois qu'un fichier est modifié, le fichier est copié à nouveau dans son intégralité et vous écrasez l'ancien fichier avec la nouvelle version. Il n'y a aucun moyen d'évaluer ce qui a changé dans le fichier et simplement annoncer les nouvelles données? Étant donné que vous n'essayez pas d'ajouter des données et que les outils que vous utilisez ne vous permettent pas de remplacer le fichier que vous pouvez en théorie, écrivez un type de script intermédiaire qui supprime les fichiers obsolètes lorsqu'ils sont détectés immédiatement avant la copie du nouveau fichier en place. Cela ressemble à une solution maladroite, mais le tout ressemble également à un processus clunky. Personnellement, je réévaluerais ce que l'objectif est ici et tel que, mais j'essaie de vous tenir à juste répondre à la question. Bonne chance!

0
mpmackenna