Làm cách nào để FTP nhiều thư mục đến một máy chủ khác bằng mput trong Unix?


18

Tôi đang đăng nhập trên một máy chủ (sử dụng Putty). từ đó tôi đang kết nối bằng FTP với máy chủ khác. Tôi muốn sao chép một số thư mục từ máy chủ đầu tiên sang máy chủ thứ hai bằng cách sử dụng mput.

Giống:

ftp> mput folder1 folder2 folder3

Nhưng tôi nhận được "thư mục1: không phải là một tập tin đơn giản." ... và cứ thế. Mỗi thư mục này có các thư mục con, tệp (một số nhị phân, một số không).

Làm thế nào tôi có thể thực hiện những gì tôi muốn mà không cần nén các công cụ và sau đó chuyển?

Câu trả lời:


19

Dòng lệnh FTP khá nguyên thủy.

Bạn không thể gửi đệ quy các tệp / thư mục tới một trang web từ xa.

Nếu bạn muốn tạo lại cấu trúc thư mục ở phía xa giống như cục bộ, bạn cần thủ công mkdirtừng đường dẫn và sử dụng mput *để gửi mọi thứ trong thư mục đó đến phía từ xa.

Hai tùy chọn để làm điều này dễ dàng hơn:

  1. Ngừng sử dụng lệnh FTP nguyên thủy (ncftp là một thay thế tốt)

  2. Sử dụng tar để tar lên các thư mục, gửi tệp và giải nén ở phía xa.


1
+1 cho tar-> put-> unsar
dave

1
-1 Bởi vì câu hỏi hỏi "Làm thế nào tôi có thể thực hiện những gì tôi muốn mà không cần nén nội dung và sau đó chuyển?", Ngụ ý rằng người đó không có quyền truy cập shell vào máy từ xa.
Steen Schütt

11

Điều này là không thể đối với chương trình ftp thông thường vì mput không sử dụng đệ quy. Bạn có thể sử dụng ncftp và sau đó gọi 'thư mục mput -r'.

Lời chúc tốt đẹp nhất, Fabian


Đó chính xác là những gì tôi đã làm gần đây trên một hộp RHEL 5. Trong gói EPEL, tệp thực thi được đặt tên là ncftpput.
Ức chế lửa

Không thể thay đổi bất cứ điều gì trong cấu hình của máy chủ. Tôi chỉ là người dùng ...

Nó phụ thuộc vào khách hàng của bạn. Không phải trên máy chủ.
Halfdan

Tôi thích làm theo cách này. Cảm ơn bạn.
Mojtaba Rezaeian

11

Tôi đã tạo một kịch bản bash:

#!/bin/bash
ftp_site=ftp.yoursite.net
username=my_user_name
passwd=my_password
remote=/path/to/remote/folder
folder=$1
cd /path/to/local/folder/$folder
pwd
ftp -in <<EOF
open $ftp_site
user $username $passwd
mkdir $remote/$folder
cd $remote/$folder
mput *
close
bye

và gọi nó với

find . -type d -exec ./recursive-ftp.sh {} \;

dường như làm việc


0

Secure Copy scp có cờ đệ quy -r mà bạn có thể thấy hữu ích.


Câu hỏi là về truy cập ftp đơn giản .. không phải scp / sftp!
Mojtaba Rezaeian

-1

mở powershell cd vào thư mục bạn muốn tải lên chạy các lệnh sau:

1. gci -r | % {if ($_.PSIsContainer) {$t = $((($_.fullname -split "\\")[$(((pwd) -split "\\").length)..200]) -join "/"); "mkdir ""$t""`r`nmput ""$t/*"" ""$t"""}} | sc .\mput_all
2. notepad .\mput_all

Dán kết quả vào cửa sổ ftp của bạn. Thưởng thức. Cũng đừng quên thêm mput * để chuyển tất cả các tệp từ thư mục cơ sở.


6
PowerShell chạy trên hệ thống Unix từ khi nào?
Michael Hampton
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.