Necesito cargar una carpeta completa usando FTP. ¿Hay alguna opción para transferir una carpeta y todo su contenido a la vez?
Necesito cargar una carpeta completa usando FTP. ¿Hay alguna opción para transferir una carpeta y todo su contenido a la vez?
Respuestas:
Si está utilizando un cliente ftp de línea de comando estándar, el MPUT
comando le permitirá transferir todos los archivos que coincidan con un patrón (estilo glob de shell), por MPUT *
lo que enviará todos los archivos en el directorio actual. También hay MGET
que recuperar archivos que coincidan con un patrón.
Por defecto, MPUT
y MGET
le pedirá si se debe transferir cada archivo antes de hacerlo. Probablemente desee desactivar la solicitud con el comando "PROMPT" (sin argumento; es una palanca).
Puedes usar ncftpput. Haz lo siguiente:
Instalar ncftp:
yum install ncftp
ñam es minúscula.
Alternativamente:
apt-get install ncftp
2. Ejecute el siguiente comando:
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Use un cliente FTP como LeechFTP o FileZilla o algo similar. Muchas personas juran por CuteFTP, pero es shareware la última vez que lo revisé. Todos admiten la transferencia de una carpeta completa, incluida la estructura del directorio.
Un tutorial simple para otros novatos de Windows como yo que terminan aquí:
La forma más fácil de cargar una carpeta completa (con todas las subcarpetas y archivos en ellas) es:
ncftpput -u * yourUserNameHere * -p * yourUserPasswordHere * -R * www.yourWebsite.com * / _C: \ yourFolderDirectoryHere \\ * _(como una línea)
Tenga en cuenta que:
-R
es una bandera para "recursivo"; hace que el comando copie todas las subcarpetas de forma recursiva/
(barra oblicua) es el directorio raíz de su sitio webC:\yourFolderDirectoryHere\*
selecciona todo dentro C:\yourFolderDirectoryHere
Ofreceré una respuesta que, aunque es pura fuerza bruta y no elegante en lo más mínimo, fue lo único que funcionó para mí en la línea de comando. Creé una lista de los archivos y los puse en un script:
genera tu lista de archivos:
find my-dir -exec echo "put /Users/username/"{} {} \;
cópielos y péguelos en el script:
#!/bin/bash
hostname="my-ftp-host"
username="username"
password="password"
ftp -in $hostname <<EOF
quote USER $username
quote PASS $password
binary
cd 123456
{COPY THE LIST HERE}
quit
EOF
Mira esto .
También puede crear mediante programación una carpeta en el servidor y luego cargar todos los archivos a esa nueva carpeta.
FileZilla es genial para esto. Si no desea descargar / instalar nada, esto se puede hacer con Internet Explorer. Vaya a las opciones avanzadas y seleccione Enable FTP folder view (outside of Internet Explorer)
. Luego puede apuntar una ventana del explorador a su servidor FTP y arrastrar y soltar archivos y carpetas entre las ventanas del explorador.
El directorio de destino es un archivo zip. Puede copiar el archivo zip completo en el servidor ftp usando el siguiente código.
//Taking source and target directory path
string sourceDir = FilePath + "Files\\" + dsCustomer.Tables[0].Rows[i][2].ToString() + "\\ConfigurationFile\\" + dsSystems.Tables[0].Rows[j][0].ToString() + "\\XmlFile";
string targetDir = FilePath + "Files\\Customers\\" + CustomerName + "\\" + SystemName + "\\";
foreach (var srcPath in Directory.GetFiles(sourceDir))
{
//Taking file name which is going to copy from the sourcefile
string result = System.IO.Path.GetFileName(srcPath);
//If that filename exists in the target path
if (File.Exists(targetDir + result))
{
//Copy file with a different name(appending "Con_" infront of the original filename)
System.IO.File.Copy(srcPath, targetDir + "Con_" + result);
}
//If not existing filename
else
{
//Just copy. Replace bit is false here. So there is no overwiting.
File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), false);
}
}
Mi respuesta es una variación de la respuesta de @dgig.
Puede enumerar todos los archivos y guardarlos (incluido el comando poner) en un archivo:
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
y luego use sftp para procesar el archivo:
sftp -C -b sftpbatchfile.txt name@server
-C
es para compresión, -b
es para archivo por lotes
sftp
programa utiliza el protocolo SFTP, que es un protocolo diferente, aunque tiene algunas letras en común. Y no editaste las enter code here
sobras.