Je souhaite copier tous les fichiers et dossiers d'un hôte à un autre. Les fichiers sur l'ancien hôte se trouvent dans/var/www/html et je n'ai qu'un accès FTP à ce serveur, et je ne peux pas tarer tous les fichiers. Une connexion régulière à l'ancien hôte via FTP m'amène au dossier/home/admin.
J'ai essayé d'exécuter la commande suivante depuis mon nouveau serveur:
wget -r ftp://username:[email protected]
Mais tout ce que je reçois est un fichier index.html composé.
Quelle est la bonne syntaxe pour utiliser wget récursivement sur FTP?
Essayez -m
pour --mirror
wget -m ftp://username:[email protected]
Vous avez raison, vous avez juste besoin d'un suivi * à la fin:
wget -r ftp://username:[email protected]/dir/*
Pour les serveurs partagés, vous pouvez utiliser comme ceci:
wget -r ftp://1.2.3.4/dir/* --ftp-user=username --ftp-password=password
Parce que la plupart des serveurs partagés ont ftp-username quelque chose comme username @ hostname, donc la première commande wget ne fonctionne pas et la deuxième commande fonctionne très bien.
Outre wget, vous pouvez également utiliser lftp en mode script. La commande suivante mettra en miroir le contenu d'un répertoire FTP distant donné dans le répertoire local donné, et il peut être placé dans le travail cron:
lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'
Il gère automatiquement la récursivité dans les répertoires et permet de spécifier le répertoire de départ de la source distante à partir de laquelle télécharger les données.
Vérifiez la commande wget ci-dessous pour télécharger les données du FTP de manière récursive.
wget --user="<user-name>" --password="<password>" -r -np -nH --cut-dirs=1 --reject "index.html*" "<URL to download files>"
-r
: Est destiné au téléchargement récursif.
-np
: Est pour aucun parent ascendant.
-nH
: Sert à désactiver la création d'un répertoire portant le même nom que l'URL, c'est-à-dire abc.xyz.com
--cut-dirs
: Sert à ignorer le nombre de répertoires parents. La valeur de cette option sera différente pour votre commande.
Vous pouvez vérifier en exécutant la commande ci-dessus.
Vous pouvez utiliser 'curlftpfs - monter un hôte ftp en tant que répertoire local' et, une fois monté, vous pouvez utiliser des outils de fichiers normaux comme 'cp -r'.
Utilisez -m plutôt que -r, en raison de la profondeur de récursivité.
http://www.editcorp.com/Personal/Lars_Appel/wget/wget_2.html#SEC11
Devrait travailler essayer:
wget -r ftp://ftp:[email protected]/tst/
Utilisation:
wget -m ftp://192.168.0.1
et il reflétera tous les fichiers et dossiers.
Comme je l'ai dit, la connexion via FTP m'amène au dossier/home/admin, et les fichiers dont j'ai besoin se trouvent dans/var/www/html
Je pense que cela fonctionnera dans votre cas:
wget -r ftp://192.168.0.1/../../var/www/html
C'est la bonne syntaxe. Je ne sais pas pourquoi vous n'obtenez pas les résultats escomptés.
Comme toujours, il y a plus d'une façon de le faire. Essayez ncftp, en particulier ncftpget
Je peux comprendre si vous essayez de vider ceci dans cron ou quelque chose, mais pourquoi ne pas simplement ftp dans le serveur avec votre client normal et mget *? Cela pourrait être un chemin plus rapide vers le succès.
Je suis tombé sur un hébergement Windows avec le nom d'utilisateur comme brinkster/username, donc wget lèverait une erreur si vous utilisez la syntaxe:
wget -m ftp://brinkster/username:[email protected]
Pour dépasser cela, utilisez
wget -m ftp://brinkster%2Fusername:[email protected]
J'ai dû faire face à cela avec l'hébergement Windows @ brinkster.