Bisakah saya mengunggah seluruh folder menggunakan FTP?

29

Saya perlu mengunggah folder lengkap menggunakan FTP. Apakah ada opsi untuk mentransfer folder dan semua isinya sekaligus?

Jeff Atwood
sumber

Jawaban:

24

Jika Anda menggunakan klien ftp baris perintah standar, MPUTperintah itu akan memungkinkan Anda untuk mentransfer semua file yang cocok dengan pola (gaya glob), sehingga MPUT *akan mengirim semua file di direktori saat ini. Ada juga MGETuntuk mengambil file yang cocok dengan suatu pola.

Secara default, keduanya MPUTdan MGETakan meminta apakah akan mentransfer setiap file sebelum melakukannya. Anda mungkin ingin mematikan prompt dengan perintah "PROMPT" (tidak ada argumen; itu toggle).

Dave Sherohman
sumber
Pertanyaan ini awalnya berasal dari stackoverflow, jadi saya merasa itu seharusnya menjadi jawaban yang diterima. Meskipun penanya asli tampaknya telah lenyap jadi tidak akan menerima satu ....
codetaku
Peringatan: klien baris perintah FTP yang datang dengan Windows tidak mendukung mode pasif sehingga menggunakan teknik ini dapat menghabiskan waktu Anda. Itu dalam kasus saya karena saya perlu mengunggah file dan menggunakan baris perintah Windows tanpa menginstal alat.
sean2078
1
Ini akan mentransfer semua file biasa dalam direktori saat ini tetapi tidak akan mentransfer secara rekursif direktori yang ada. Itu hanya akan mengabaikan mereka secara diam
bergercookie
22

Anda dapat menggunakan ncftpput. Lakukan hal berikut:

  1. Instal ncftp:

    yum install ncftp
    

yum adalah huruf kecil.

Kalau tidak:

    apt-get install ncftp

2. Jalankan perintah berikut:

    ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
Mohamed BK
sumber
Yum harus diubah menjadi yum - karena case-sensitive.
olekeh
1
Berikut ini semua opsi CLI untuk ncftpput: ncftp.com/ncftp/doc/ncftpput.html
Pepijn Olivier
8

Gunakan klien FTP seperti LeechFTP atau FileZilla atau yang serupa. Banyak orang bersumpah dengan CuteFTP, tapi itu shareware terakhir yang saya periksa. Semua dukungan mentransfer seluruh folder termasuk struktur direktori.

Joshua Nurczyk
sumber
1
+1 untuk FileZilla: filezilla-project.org/download.php?type=client
William Jackson
5
  1. minta pengguna / klien zip folder
  2. unggah file zip
  3. unzip sisi server folder .
Chase Florell
sumber
catatan: jawaban saya diposting di StackOverflow. Itu sebabnya referensi solusi "coding".
Chase Florell
2

Tutorial sederhana untuk pemula Windows lainnya seperti saya yang berakhir di sini:

Cara termudah untuk mengunggah seluruh folder (dengan semua subfolder dan file di dalamnya) adalah:

  1. Unduh NcFTP Client (gratis, tetapi Anda dapat menyumbang) dari tautan ini .
  2. Pilih NcFTP Client 3.2.5 untuk Microsoft Windows dari daftar.
  3. Pasang itu.
  4. Setelah selesai, jendela CMD kecil dengan ikon ceri akan muncul. Anda tidak membutuhkannya.
  5. Cukup buka jendela CMD standar dan ketik:
    ncftpput -u * yourUserNameHere * -p * yourUserPasswordHere * -R * www.yourWebsite.com * /
                     _C: \ yourFolderDirectoryHere \\ * _
    (sebagai satu baris).

Perhatikan bahwa:

  • -R adalah bendera untuk "rekursif"; itu membuat perintah menyalin semua subfolder secara rekursif
  • / (slash) adalah direktori root situs web Anda
  • C:\yourFolderDirectoryHere\* memilih semua yang ada di dalamnya C:\yourFolderDirectoryHere
DBS
sumber
terlihat bagus, tetapi server melarang IP saya mengatakan saya membuat 800 koneksi dalam waktu singkat tidak ada cara untuk mengurangi jumlah koneksi. Masalah lain adalah bahwa saya tidak tahu cara melewati pengunggahan jika file tujuan sudah ada.
16851556
2

Saya akan menawarkan jawaban yang - meskipun itu adalah kekuatan kasar murni dan tidak anggun sedikit pun - adalah satu-satunya hal yang berhasil bagi saya di baris perintah. Saya membuat daftar file, dan memasukkannya ke dalam skrip:

buat daftar file Anda:

find my-dir -exec echo "put /Users/username/"{} {}  \;

salin dan tempel ke skrip:

#!/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
dgig
sumber
1

Lihat ini .

Anda juga dapat membuat folder di server , dan kemudian mengunggah semua file ke folder baru itu.

BrandonZeider
sumber
Pertanyaan SO yang ditautkan telah dihapus.
cxw
0

FileZilla sangat bagus untuk ini. Jika Anda tidak ingin mengunduh / menginstal apa pun, ini dapat dilakukan dengan Internet Explorer. Pergilah ke opsi lanjutan, dan pilih Enable FTP folder view (outside of Internet Explorer). Kemudian Anda bisa mengarahkan jendela explorer di server FTP Anda dan drag-and-drop file dan folder antara windows explorer.

Jim Fell
sumber
0

Firefox memiliki plug-in yang disebut FireFtp yang merupakan klien ftp yang bagus.

jet
sumber
0

Dir target adalah file zip. Anda dapat menyalin file zip lengkap ke server ftp menggunakan kode di bawah ini.

//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);
    }
}         
pengguna606353
sumber
Itu bagus, tetapi program Anda tidak dapat dikompilasi.
DavidPostill
0

Jawaban saya adalah variasi dari jawaban @dgig.

Anda dapat mendaftar semua file dan menyimpannya (termasuk perintah put) ke dalam file:

find my-dir -exec echo "put /Users/username/"{} {} > list.txt \; 

dan kemudian gunakan sftp untuk memproses file:

sftp -C -b sftpbatchfile.txt name@server

-Cadalah untuk kompresi, -buntuk file batch

Juraj.Lorinc
sumber
Ini tidak menggunakan FTP seperti yang diminta. The sftpProgram menggunakan protokol SFTP yang merupakan protokol yang berbeda meskipun memiliki beberapa huruf yang sama. Dan Anda tidak mengedit enter code heresisanya.
dave_thompson_085