Làm cách nào tôi có thể song song việc tải lên một thư mục bằng FTP?


8

Tôi cần tải lên một thư mục với một cây khá phức tạp (rất nhiều thư mục con, v.v.) bằng FTP. Tôi không thể nén thư mục này, vì tôi không có quyền truy cập vào đích ngoài FTP - ví dụ: không có tar. Vì đây là khoảng cách rất dài (Hoa Kỳ => Úc), độ trễ khá cao.

Làm theo lời khuyên trong Làm thế nào để FTP nhiều thư mục đến một máy chủ khác bằng cách sử dụng mput trong Unix? , Tôi hiện đang sử dụng ncftpđể thực hiện chuyển với mput -r. Thật không may, điều này dường như chuyển một tệp duy nhất tại một thời điểm, lãng phí rất nhiều băng thông có sẵn trên đầu truyền thông.

Có cách nào tôi có thể song song quá trình này, tức là tải lên nhiều tệp từ thư mục này cùng một lúc không? Tất nhiên, tôi có thể tự tách nó ra và thực hiện mput -rtrên từng đoạn, nhưng đó là một quá trình tẻ nhạt.

Phương pháp CLI được ưu tiên rất nhiều, vì máy khách thực sự là một máy chủ không đầu được truy cập thông qua SSH.


Sẽ rsynclà một lựa chọn? chỉnh sửa rõ ràng là không, vì nó không hoạt động trên ftp. Có thể đáng để hỏi quản trị viên máy chủ đích xem anh ta có sẵn sàng cấp cho bạn sftpquyền truy cập hay không - bạn sẽ không thể đăng nhập, nhưng rsyncsẽ hoạt động.
Shadur

Câu trả lời:


9

lftp sẽ làm điều này với lệnh mirror -R -P 20 localpath- nhân bản đồng bộ giữa các vị trí và -R sử dụng máy chủ từ xa làm đích, với P thực hiện 20 lần chuyển song song cùng một lúc.

Như đã giải thích trong man lftp:

   mirror [OPTS] [source [target]]

   Mirror specified source directory to local target directory. If  target
   directory ends with a slash, the source base name is appended to target
   directory name. Source and/or target can be URLs pointing  to  directo‐
   ries.


        -R,    --reverse                 reverse mirror (put files)
        -P,    --parallel[=N]            download N files in parallel

2

Bạn có thể thử sử dụng gnu song song và cuộn tròn để tự động hóa nó.

sau đó bạn có thể làm một cái gì đó như:

find . -t f -name "*.pdf" | parallel -j 4 curl -T {} ftp://ftp.site.com --user me:pass

Điều này sẽ chạy 4 công việc trên mỗi cpu tải lên tất cả pdf trong đường dẫn làm việc.


Đây là một cách tiếp cận khả thi, nhưng có một nhược điểm là cần phải xác thực một lần cho mỗi tệp - một lần nữa, rất nhiều chi phí trở nên tồi tệ hơn do độ trễ cao.
Bob
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.