Chạy LFTP trên danh sách các tệp


7

Tôi có một danh sách các đường dẫn được phân tách bằng dòng mới đến các tệp mà tôi muốn tải xuống thông qua LFTP, từ một máy từ xa đến một máy cục bộ có cùng cấu trúc thư mục. Có cách nào để tôi có thể vượt qua danh sách các tệp của LFTP (toàn bộ đường dẫn đến tệp trên máy từ xa không) và có chỉ tải xuống các tệp đó không? Phương pháp hiện tại của tôi là chuyển từng tệp riêng lẻ đến LFTP, tải xuống và sau đó lặp lại quy trình tương tự với tệp tiếp theo cho đến khi danh sách của tôi cạn kiệt. Rõ ràng, việc bó các tệp để tải xuống sẽ nhanh hơn nhiều, giải pháp hiện tại của tôi cảm thấy rất khó chịu.

Câu trả lời:


3

Còn những thứ như thế này thì sao.

[root@localhost foo]# ls -l file*
-rw-r--r--. 1 root root 33 Jun 30 15:09 filelist
[root@localhost foo]# cat filelist
/tmp/file1
/tmp/file2
/tmp/file3
[root@localhost foo]# awk 'BEGIN { print "open localhost\nuser steve steve\n" } { print "get " $0 } END { print "exit" }' filelist | lftp
[root@localhost foo]# ls -l file*
-rw-r--r--. 1 root root  0 Jun 30 14:57 file1
-rw-r--r--. 1 root root  0 Jun 30 14:57 file2
-rw-r--r--. 1 root root  0 Jun 30 14:57 file3
-rw-r--r--. 1 root root 33 Jun 30 15:09 filelist
[root@localhost foo]#

2

Để mở rộng câu trả lời của steve, tập lệnh này phản chiếu danh sách các tệp nếu cần trong khi bảo quản các thư mục.

#!/bin/bash
gawk 'BEGIN { print "open ftp://example.com\n user username password\ncd /remote/dir/\n" } { if (match ($0 ,/.+\//, m)) print "mirror -v -O localbasedir/" m[0] " -f " $0  } END { print "exit" }' filelist | lftp

Bất kỳ cơ hội nào bạn có thể cung cấp thêm một số chi tiết về chuỗi GAWK đó?
Robert Mark Bram

lftp mirror chỉ có thể nhân bản các thư mục, vì vậy tôi lấy danh sách các đường dẫn, trích xuất thư mục từ chúng, sau đó xây dựng một tập lệnh lftp với các lệnh nhân bản cho mỗi tệp với các thư mục của chúng ... điều này có nghĩa là lftp sẽ chỉ sao chép chúng từ ftp nếu họ đã thay đổi kể từ lần đồng bộ hóa cuối cùng
MarZab
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.