Devo caricare una cartella completa tramite FTP. C'è qualche opzione per trasferire una cartella e tutto il suo contenuto in una volta?
Devo caricare una cartella completa tramite FTP. C'è qualche opzione per trasferire una cartella e tutto il suo contenuto in una volta?
Risposte:
Se si utilizza un client ftp della riga di comando standard, il MPUT
comando consente di trasferire tutti i file corrispondenti a un modello (stile shell globale), quindi MPUT *
invierà tutti i file nella directory corrente. C'è anche MGET
per recuperare i file corrispondenti a un modello.
Per impostazione predefinita, entrambi MPUT
e MGET
chiederanno se trasferire ciascun file prima di farlo. Probabilmente vorrai disattivare il prompt con il comando "PROMPT" (nessun argomento; è un interruttore).
Puoi usare ncftpput. Eseguire le seguenti operazioni:
Installa ncftp:
yum install ncftp
yum è minuscolo.
In alternativa:
apt-get install ncftp
2. Eseguire il comando seguente:
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Utilizzare un client FTP come LeechFTP o FileZilla o qualcosa di simile. Molte persone giurano su CuteFTP, ma è l'ultimo shareware che ho controllato. Tutti supportano il trasferimento di un'intera cartella inclusa la struttura delle directory.
Un semplice tutorial per altri neofiti di Windows come me che finiscono qui:
Il modo più semplice per caricare un'intera cartella (con tutte le sottocartelle e i file in esse contenuti) è:
ncftpput -u * yourUserNameHere * -p * yourUserPasswordHere * -R * www.yourWebsite.com * / _C: \ yourFolderDirectoryHere \\ * _(come una riga).
Nota che:
-R
è una bandiera per "ricorsivo"; rende il comando copia ricorsivamente tutte le sottocartelle/
(barra) è la directory principale del tuo sito webC:\yourFolderDirectoryHere\*
seleziona tutto all'interno C:\yourFolderDirectoryHere
Offrirò una risposta che - sebbene sia pura forza bruta e per nulla elegante - è stata l'unica cosa che ha funzionato per me sulla riga di comando. Ho creato un elenco dei file e li ho inseriti in uno script:
genera il tuo elenco di file:
find my-dir -exec echo "put /Users/username/"{} {} \;
copiarli e incollarli nello 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
Dai un'occhiata .
È inoltre possibile creare a livello di programmazione una cartella sul server e quindi caricare tutti i file in quella nuova cartella.
FileZilla è ottimo per questo. Se non desideri scaricare / installare nulla, puoi farlo con Internet Explorer. Vai nelle opzioni avanzate e seleziona Enable FTP folder view (outside of Internet Explorer)
. Quindi puoi puntare una finestra di Explorer sul tuo server FTP e trascinare e rilasciare file e cartelle tra le finestre di Explorer.
La directory di destinazione è un file zip. È possibile copiare il file zip completo nel server ftp utilizzando il codice seguente.
//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);
}
}
La mia risposta è una variazione della risposta di @dgig.
Puoi elencare tutti i file e salvarli (incluso il comando put) in un file:
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
e quindi utilizzare sftp per elaborare il file:
sftp -C -b sftpbatchfile.txt name@server
-C
è per la compressione, -b
è per il file batch
sftp
programma utilizza il protocollo SFTP, che è un protocollo diverso sebbene abbia alcune lettere in comune. E non hai modificato il enter code here
rimanente.