Kan ik een hele map uploaden met FTP?
Ik moet een volledige map uploaden met FTP. Is er een mogelijkheid om een map en de gehele inhoud in één keer te uploaden?
Ik moet een volledige map uploaden met FTP. Is er een mogelijkheid om een map en de gehele inhoud in één keer te uploaden?
U kunt ncftpput gebruiken. Doe het volgende:
yum is kleine letters.
Als alternatief:
apt-get install ncftp
ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Als u een standaard command-line ftp-client gebruikt, kunt u met het commando MPUT
alle bestanden verzenden die overeenkomen met een (shell glob-stijl) patroon, dus MPUT *
verzendt alle bestanden in de huidige directory. Er is ook MGET
om bestanden op te halen die overeenkomen met een patroon.
Standaard vragen zowel MPUT
als MGET
of ze elk bestand willen versturen voordat ze dat doen. Je zou het vragen waarschijnlijk uit willen zetten met het “PROMPT” commando (geen argument; het is een toggle).
Gebruik een FTP client zoals LeechFTP of FileZilla of iets dergelijks. Veel mensen zweren bij CuteFTP, maar dat is shareware, voor zover ik weet. Ze ondersteunen allemaal het overzetten van een hele map inclusief directory structuur.
Ik zal een antwoord geven dat - hoewel het pure brute kracht is en niet elegant - het enige was dat voor mij werkte op de commandoregel. Ik heb een lijst met bestanden gemaakt, en die in een script gezet:
genereer je lijst met bestanden:
find my-dir -exec echo "put /Users/username/"{} {} \;
kopieer en plak ze in het 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
Een eenvoudige handleiding voor andere Windows-newbies zoals ik die hier terechtkomen:
De eenvoudigste manier om een hele map (met alle submappen en bestanden erin) te uploaden is:
ncftpput -u \*yourUserNameHere\* -p \*yourUserPasswordHere\* -R \*www.yourWebsite.com\* / \_C:\yourFolderDirectoryHere\*\_
(als één regel). Merk op dat:
-R
is een vlag voor “recursief”; het commando kopieert dan recursief alle submappen /
(schuine streep) is de hoofdmap van je website C:\yourFolderDirectoryHere\*
selecteert alles binnen C:\yourFolderDirectoryHere
Kijk hier eens naar .
Je kunt ook programmatisch een map op de server aanmaken , en dan alle bestanden naar die nieuwe map uploaden.
De doel dir is een zip bestand. U kunt het volledige zip-bestand naar de ftp-server kopiëren met onderstaande code.
//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 is hier geweldig voor. Als u niets wilt downloaden/installeren, kan dit ook met Internet Explorer. Ga naar de geavanceerde opties, en selecteer Enable FTP folder view (outside of Internet Explorer)
. Dan kun je een verkennervenster richten op je FTP-server en bestanden en mappen slepen tussen verkennervensters.
Mijn antwoord is een variatie op @dgig ‘s antwoord.
Je kunt een lijst maken van alle bestanden en ze opslaan (inclusief put-commando) in een bestand:
find my-dir -exec echo "put /Users/username/"{} {} > list.txt \;
en dan sftp gebruiken om het bestand te verwerken:
sftp -C -b sftpbatchfile.txt name@server
-C
is voor compressie, -b
is voor batch-bestand