Tôi có thể tải lên toàn bộ thư mục bằng FTP không?


29

Tôi cần tải lên một thư mục đầy đủ bằng FTP. Có bất kỳ tùy chọn để chuyển một thư mục và tất cả các nội dung của nó cùng một lúc?

Câu trả lời:


24

Nếu bạn đang sử dụng máy khách ftp dòng lệnh tiêu chuẩn, MPUTlệnh sẽ cho phép bạn chuyển tất cả các tệp khớp với mẫu (kiểu vỏ toàn cầu), do đó MPUT *sẽ gửi tất cả các tệp trong thư mục hiện tại. Ngoài ra còn có MGETđể lấy các tập tin phù hợp với một mẫu.

Theo mặc định, cả hai MPUTMGETsẽ nhắc xem có nên chuyển từng tệp trước khi thực hiện hay không. Bạn có thể muốn tắt lời nhắc bằng lệnh "KHUYẾN MÃI" (không có đối số; đó là một sự thay đổi).


Câu hỏi này ban đầu đến từ stackoverflow, vì vậy tôi cảm thấy rằng nó nên là câu trả lời được chấp nhận. Mặc dù người hỏi ban đầu dường như đã biến mất, nhưng sẽ không chấp nhận một người ....
codetaku

Cảnh báo: ứng dụng khách dòng lệnh FTP đi kèm với Windows không hỗ trợ chế độ thụ động, vì vậy sử dụng kỹ thuật này có thể lãng phí thời gian của bạn. Nó đã làm trong trường hợp của tôi vì tôi cần tải lên các tệp và đang sử dụng dòng lệnh Windows được cài đặt công cụ.
sean2078

1
Nó sẽ chuyển tất cả các tệp đơn giản trong thư mục hiện tại nhưng nó sẽ không chuyển đệ quy bất kỳ thư mục nào có mặt. Nó sẽ im lặng bỏ qua chúng
bergercookie

22

Bạn có thể sử dụng ncftpput. Làm như sau:

  1. Cài đặt ncftp:

    yum install ncftp
    

yum là chữ thường

Cách khác:

    apt-get install ncftp

2. Thực hiện lệnh sau:

    ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*

Yum nên được đổi thành yum - vì nó phân biệt chữ hoa chữ thường.
olekeh

1
Dưới đây là tất cả các tùy chọn CLI cho ncftpput: ncftp.com/ncftp/doc/ncftpput.html
Pepijn Olivier

8

Sử dụng máy khách FTP như LeechFTP hoặc FileZilla hoặc một cái gì đó tương tự. Nhiều người chửi bới CuteFTP, nhưng đó là phần mềm chia sẻ cuối cùng tôi đã kiểm tra. Tất cả hỗ trợ chuyển toàn bộ thư mục bao gồm cấu trúc thư mục.




2

Một hướng dẫn đơn giản cho những người mới sử dụng Windows khác như tôi, người sẽ bắt đầu ở đây:

Cách dễ nhất để tải lên toàn bộ thư mục (có tất cả các thư mục con và tệp trong đó) là:

  1. Tải xuống NcFTP Client (miễn phí, nhưng bạn có thể quyên góp) từ liên kết này .
  2. Chọn NcFTP Client 3.2.5 cho Microsoft Windows từ danh sách.
  3. Cài đặt nó.
  4. Khi hoàn tất, một cửa sổ CMD nhỏ với biểu tượng anh đào sẽ bật lên. Bạn không cần nó.
  5. Chỉ cần mở một cửa sổ CMD tiêu chuẩn và gõ:
    ncftpput -u * yourUserNameHere * -p * yourUserPasswordHere * -R * www.yourWebsite.com * /
                     _C: \ yourFolderDirectoryHere \\ * _
    (như một dòng).

Lưu ý rằng:

  • -R là một lá cờ cho "đệ quy"; nó làm cho lệnh sao chép tất cả các thư mục con theo cách đệ quy
  • / (dấu gạch chéo) là thư mục gốc của trang web của bạn
  • C:\yourFolderDirectoryHere\* chọn mọi thứ bên trong C:\yourFolderDirectoryHere

Có vẻ tốt, nhưng máy chủ đã cấm IP của tôi nói rằng tôi đã thực hiện 800 kết nối trong khoảng thời gian ngắn. không có cách nào để giảm số lượng kết nối Vấn đề KHÁC là tôi không biết cách bỏ qua việc tải lên nếu tệp đích đã tồn tại.
16851556

2

Tôi sẽ đưa ra một câu trả lời - mặc dù đó là lực lượng vũ phu thuần túy và không thanh lịch trong một chút - là điều duy nhất làm việc cho tôi trên dòng lệnh. Tôi đã tạo một danh sách các tệp và đặt chúng vào một tập lệnh:

tạo danh sách các tập tin của bạn:

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

sao chép và dán chúng vào tập lệnh:

#!/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 là tuyệt vời cho việc này. Nếu bạn không muốn tải xuống / cài đặt bất cứ thứ gì, điều này có thể được thực hiện với Internet Explorer. Đi vào các tùy chọn nâng cao và chọn Enable FTP folder view (outside of Internet Explorer). Sau đó, bạn có thể trỏ một cửa sổ thám hiểm vào máy chủ FTP của mình và kéo và thả các tệp và thư mục giữa các cửa sổ thám hiểm.



0

Thư mục tiêu là một tệp zip. Bạn có thể sao chép tệp zip đầy đủ vào máy chủ ftp bằng mã bên dưới.

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

Điều đó thật tuyệt, nhưng chương trình của bạn không được biên dịch.
DavidPostill

0

Câu trả lời của tôi là biến thể của câu trả lời của @dgig.

Bạn có thể liệt kê tất cả các tệp và lưu chúng (bao gồm lệnh put) vào một tệp:

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

và sau đó sử dụng sftp để xử lý tệp:

sftp -C -b sftpbatchfile.txt name@server

-Clà để nén, -blà cho tập tin bó


Điều này không sử dụng FTP như yêu cầu. Các sftpchương trình sử dụng giao thức SFTP đó là một giao thức khác nhau mặc dù nó có một số chữ cái chung. Và bạn đã không chỉnh sửa phần enter code herecòn lại.
dave_thndry_085
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.