Posso caricare un'intera cartella usando FTP?
Ho bisogno di caricare un'intera cartella usando FTP. C'è qualche opzione per trasferire una cartella e tutto il suo contenuto in una volta sola?
Ho bisogno di caricare un'intera cartella usando FTP. C'è qualche opzione per trasferire una cartella e tutto il suo contenuto in una volta sola?
Potete usare ncftpput. Fate quanto segue:
yum è minuscolo.
In alternativa:
apt-get install ncftp
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Se state usando un client ftp standard a riga di comando, il comando MPUT
vi permetterà di trasferire tutti i file che corrispondono a uno schema (stile glob della shell), quindi MPUT *
invierà tutti i file nella directory corrente. C'è anche MGET
per recuperare i file che corrispondono a uno schema.
Per default, sia MPUT
che MGET
chiederanno se trasferire ogni file prima di farlo. Probabilmente vorrete disattivare la richiesta con il comando “PROMPT” (nessun argomento; è un toggle).
Usa un client FTP come LeechFTP o FileZilla o qualcosa di simile. Molte persone giurano su CuteFTP, ma è shareware l'ultima volta che ho controllato. Tutti supportano il trasferimento di un'intera cartella, compresa la struttura delle directory.
Offrirò una risposta che - sebbene sia pura forza bruta e non sia minimamente elegante - è stata l'unica cosa che ha funzionato per me sulla linea di comando. Ho creato una lista di file e li ho messi in uno script:
genera la tua lista di file:
find my-dir -exec echo "put /Users/username/"{} {} \;
copia e incolla 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
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 al loro interno) è:
ncftpput -u \*yourUserNameHere\* -p \*yourUserPasswordHere\* -R \*www.yourWebsite.com\* / \_C:\yourFolderDirectoryHere\*\_
(come una sola riga). Notate che:
-R
è un flag per “recursive”; fa sì che il comando copi ricorsivamente tutte le sottocartelle /
(slash) è la directory principale del tuo sito web C:\yourFolderDirectoryHere\*
seleziona tutto ciò che si trova dentro C:\yourFolderDirectoryHere
Guarda questo fuori .
Puoi anche creare programmaticamente una cartella sul server , e poi caricare tutti i file in quella nuova cartella.
La cartella di destinazione è un file zip. Potete copiare il file zip completo nel server ftp usando 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);
}
}
FileZilla è ottimo per questo. Se non vuoi scaricare/installare nulla, questo può essere fatto con Internet Explorer. Vai nelle opzioni avanzate e seleziona Enable FTP folder view (outside of Internet Explorer)
. Poi puoi puntare una finestra di explorer al tuo server FTP e trascinare file e cartelle tra le finestre di explorer.
La mia risposta è una variazione della risposta di @dgig.
Puoi elencare tutti i file e salvarli (compreso il comando put) in un file:
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
e poi usare sftp per elaborare il file:
sftp -C -b sftpbatchfile.txt name@server
-C
è per la compressione, -b
è per il file batch