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?

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).


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/*

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



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

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


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.


0

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


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);
    }
}         

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.