Tôi muốn sao chép tất cả các tệp và thư mục từ Máy chủ này sang Máy chủ khác. Các tệp trên Máy chủ cũ nằm ở/var/www/html và tôi chỉ có quyền truy cập FTP vào máy chủ đó và tôi không thể TAR tất cả các tệp. Kết nối thường xuyên với Máy chủ cũ thông qua FTP đưa tôi đến thư mục/home/admin.
Tôi đã thử chạy lệnh sau đây từ máy chủ mới của tôi:
wget -r ftp://username:[email protected]
Nhưng tất cả những gì tôi nhận được là một tệp index.html được tạo thành.
Cú pháp đúng để sử dụng wget đệ quy qua FTP là gì?
Thử -m
cho --mirror
wget -m ftp://username:[email protected]
Bạn có quyền, bạn chỉ cần một dấu * ở cuối:
wget -r ftp://username:[email protected]/dir/*
Đối với các máy chủ được chia sẻ, bạn có thể sử dụng như thế này:
wget -r ftp://1.2.3.4/dir/* --ftp-user=username --ftp-password=password
Bởi vì hầu hết các máy chủ được chia sẻ có tên người dùng ftp giống như tên người dùng @ tên máy chủ, vì vậy, lệnh wget đầu tiên không hoạt động và lệnh thứ hai hoạt động tốt.
Ngoài wget, bạn cũng có thể sử dụng lftp trong chế độ tập lệnh. Lệnh sau sẽ phản chiếu nội dung của một thư mục FTP từ xa đã cho vào thư mục cục bộ đã cho và nó có thể được đưa vào công việc định kỳ:
lftp -c 'open <hostname>; user <username> <password>; mirror -e <remote-src-path> <local-dest-path>; quit'
Nó tự động xử lý đệ quy vào các thư mục và cho phép chỉ định thư mục bắt đầu từ xa để tải dữ liệu từ đó.
Kiểm tra lệnh wget dưới đây để tải xuống dữ liệu từ FTP theo cách đệ quy.
wget --user="<user-name>" --password="<password>" -r -np -nH --cut-dirs=1 --reject "index.html*" "<URL to download files>"
-r
: Dành cho tải về đệ quy.
-np
: Không dành cho cha mẹ tăng dần.
-nH
: Là để vô hiệu hóa việc tạo thư mục có tên giống như URL, tức là abc.xyz.com
--cut-dirs
: Dành cho việc bỏ qua số lượng thư mục cha. Giá trị của tùy chọn này sẽ khác nhau cho lệnh của bạn.
Bạn có thể kiểm tra bằng cách thực hiện lệnh trên.
Bạn có thể sử dụng 'curlftpfs - gắn máy chủ ftp làm thư mục cục bộ' và sau khi được gắn kết, bạn có thể sử dụng các công cụ tệp thông thường như 'cp -r'.
Sử dụng -m chứ không phải -r, vì độ sâu đệ quy.
http://www.editcorp.com/Personal/Lars_Appel/wget/wget_2.html#SEC11
Nên làm việc thử:
wget -r ftp://ftp:[email protected]/tst/
Sử dụng:
wget -m ftp://192.168.0.1
và nó sẽ phản chiếu tất cả các tập tin và thư mục.
Như tôi đã nói, đăng nhập qua FTP sẽ đưa tôi đến thư mục/home/admin và các tệp tôi cần có trong/var/www/html
Tôi nghĩ rằng điều này sẽ làm việc trong trường hợp của bạn:
wget -r ftp://192.168.0.1/../../var/www/html
Đó là cú pháp đúng. Không chắc chắn tại sao bạn không nhận được kết quả mong đợi.
Như đã từng có nhiều hơn một cách để làm điều đó. Hãy thử ncftp, đặc biệt là ncftpget
Tôi có thể hiểu nếu bạn đang cố gắng chuyển thứ này vào cron hoặc thứ gì đó, nhưng tại sao không đơn giản là ftp vào máy chủ với máy khách bình thường của bạn và mget *? Đây có thể là một con đường nhanh hơn để thành công.
Tôi đã bắt gặp Windows hosting với tên người dùng là brinkster/tên người dùng, vì vậy wget sẽ đưa ra lỗi nếu bạn sử dụng cú pháp:
wget -m ftp://brinkster/username:[email protected]
Để vượt qua điều này, sử dụng
wget -m ftp://brinkster%2Fusername:[email protected]
Tôi đã phải đối mặt với điều này với Windows hosting @ brinkster.