Si trabajas con páginas web y tienes que subir archivos mediante FTP a tu hosting, a menudo te habrás encontrado con el problema de subir el mismo archivo (o archivos) a diferentes subdirectorios yendo uno por uno y poniendo a prueba tu paciencia. Con el siguiente método lo conseguirás de un modo automatizado, algo esencial cuando tienes cientos de subdirectorios.
El reto de la automatización en FTP
Al trabajar con grandes cantidades de subdirectorios, el método de arrastrar y soltar tradicional ya no es práctico. La automatización se convierte en la clave para mantener la eficiencia.
Por ejemplo, imaginemos que tengo un archivo llamado archivo.html en la carpeta c:Documentos de mi PC y quiero enviar ese archivo a 500 subdirectorios de mi hosting llamados carpeta1, carpeta2, … carpeta500. ¿Podría hacerlo uno por uno con programas de FTP como Filezilla? Sí, pero acabaría extenuado. Hay formas de hacerlo mucho más fáciles y rápidas. Te ofrezco diferentes métodos para que elijas cuál se adapta mejor a tus conocimientos y sistema operativo.
1. Uso de PyroBatchFTP (para Windows)
Estuve buscando algún programa de FTP que permitiera hacer el proceso explicado anteriormente con solo señalar las carpetas de destino, pero lamentablemente no encontré ninguno. Sin embargo, hay una forma simple de automatizar esta tediosa tarea de subir uno a uno los archivos con un programa llamado PyroBatchFTP Standar Edition (es una versión funcional durante 30 días). Aunque el programa está en inglés, es simple de usar. Solo es necesario editar el archivo Test.cmd y escribir las siguientes líneas de comando:
Connect "ftp.tudominio.com", "nombredeusuario", "contraseña"
LocalChDir "C:Carpetadeorigen"
RemoteChDir "/carpetadestino1"
Put "archivo.html"
RemoteChDir "/carpetadestino2"
Put *.*
RemoteChDir "/carpetadestino3"
Put "ejemplo.txt"
Disconnect
Es decir, en LocalChDir debes indicar la ruta al archivo local de origen en tu PC que quieres transferir a múltiples subdirectorios. En RemoteChDir debes escribir la ruta remota de la carpeta donde quieras que el archivo sea puesto. Dependiendo de tu hosting, esa ruta puede comenzar por “public_html/” o bien solo con “/”. Por último, en Put debes poner el nombre del archivo que quieres enviar. Si son varios archivos, pones varios Put con sus nombres, y si quieres enviar todos los archivos de la carpeta local de origen entonces pones Put . y se subirán todos.
Puede parecer muy tedioso tener que escribir tantos nombres de subdirectorios la primera vez, pero una vez que se tienen guardados ya podemos repetir el proceso en sucesivas ocasiones y ver cómo el programa envía esos archivos a todas las carpetas de forma automática. Eso sí, cuantos más archivos quieras enviar y más carpetas sean, más tardará. En ese caso puedes desear particionar el número de carpetas en diferentes scripts de ejecución.
2. Uso de scripts para automatizar la tarea
La forma más eficaz de subir archivos de forma automatizada a múltiples subdirectorios es mediante scripts. Estos permiten programar acciones repetitivas de manera eficiente. No obstante, debes tener algo más de conocimientos informáticos para llevarlo a cabo.
Scripting con Bash y lftp (Linux):
lftp
es una herramienta poderosa que puedes utilizar en Linux. Un ejemplo de script para subir un archivo a múltiples directorios sería:
#!/bin/bash
SERVER='tu_servidor_ftp'
USER='tu_usuario'
PASS='tu_contraseña'
FILE='/ruta/del/archivo_a_subir'
REMOTE_DIR='/ruta/del/directorio_base'
lftp -f "
open $SERVER
user $USER $PASS
lcd `dirname $FILE`
cd $REMOTE_DIR
mput `basename $FILE`
bye
"
Para ejecutar este script en todos los subdirectorios, puedes combinarlo con un bucle for
.
Scripting con PowerShell (Windows):
PowerShell ofrece la posibilidad de conectarse a servidores FTP y automatizar la subida de archivos. Un ejemplo sería:
$ftpUrl = 'ftp://tu_servidor_ftp'
$ftpUser = 'tu_usuario'
$ftpPassword = 'tu_contraseña'
$fileToUpload = 'C:\ruta\del\archivo_a_subir'
$remoteDirs = @('dir1', 'dir2', ... , 'dirN')
foreach ($dir in $remoteDirs) {
$ftpFullUrl = $ftpUrl + '/' + $dir + '/' + [System.IO.Path]::GetFileName($fileToUpload)
$webClient = New-Object System.Net.WebClient
$webClient.Credentials = New-Object System.Net.NetworkCredential($ftpUser, $ftpPassword)
$webClient.UploadFile($ftpFullUrl, $fileToUpload)
}
Este script tomará cada directorio de la lista $remoteDirs
y subirá el archivo deseado.
3. Utilidades de terceros para la automatización
Si prefieres no escribir scripts, hay herramientas, como AutoFTP Manager, ScriptFTP o el citado al principio PyroBatchFTP, que ofrecen una interfaz gráfica y la posibilidad de automatizar tareas mediante scripts predefinidos. El problema es que estos programas son para Windows. Si usas el sistema operativo Linux probablemente ya tengas conocimientos suficientes para utilizar un script con lftp en Linux como comentaba en el método 2.
Conclusión
Automatizar la subida de un archivo a múltiples subdirectorios en FTP es esencial cuando se trabaja con grandes volúmenes de directorios. Ya sea mediante scripts personalizados o herramientas de software especializadas, es posible ahorrar tiempo y esfuerzo. La clave es encontrar el método que mejor se adapte a tus necesidades y conocimientos.