วิธี FTP หลายโฟลเดอร์ไปยังเซิร์ฟเวอร์อื่นโดยใช้ mput ใน Unix ได้อย่างไร


18

ฉันเข้าสู่ระบบบนเซิร์ฟเวอร์ (ใช้ Putty) จากนั้นฉันกำลังเชื่อมต่อโดยใช้ FTP ไปยังเซิร์ฟเวอร์อื่น ฉันต้องการคัดลอกหลายโฟลเดอร์จากเซิร์ฟเวอร์แรกไปยังเซิร์ฟเวอร์ที่สองโดยใช้ mput

ชอบ:

ftp> mput folder1 folder2 folder3

แต่ฉันได้รับ "folder1: ไม่ใช่ไฟล์ธรรมดา" ... และอื่น ๆ แต่ละโฟลเดอร์เหล่านี้มีโฟลเดอร์ย่อยไฟล์ (บางไบนารีบางโฟลเดอร์ไม่มี)

ฉันจะทำสิ่งที่ฉันต้องการให้สำเร็จโดยไม่ต้องซิปสิ่งของแล้วโอนย้ายได้อย่างไร

คำตอบ:


19

บรรทัดคำสั่ง FTP นั้นค่อนข้างดั้งเดิม

คุณไม่สามารถส่งไฟล์ / โฟลเดอร์ซ้ำ ๆ ไปยังไซต์ระยะไกลได้

หากคุณต้องการสร้างโครงสร้างไดเรกทอรีในด้านระยะไกลเช่นเดียวกับท้องถิ่นคุณจะต้องmkdirแต่ละเส้นทางด้วยตนเองและใช้mput *เพื่อส่งทุกอย่างในไดเรกทอรีนั้นไปยังด้านระยะไกล

สองตัวเลือกเพื่อทำให้ง่ายขึ้น:

  1. หยุดใช้คำสั่ง FTP ดั้งเดิม (ncftp เป็นทางเลือกที่ดี)

  2. ใช้ tar เพื่อ tar โฟลเดอร์ส่งไฟล์และแตกไฟล์ทางด้านไกล


1
+1 สำหรับ tar-> put-> Untar
dave

1
-1 เนื่องจากคำถามถามว่า "ฉันจะทำสิ่งที่ฉันต้องการได้อย่างไรโดยไม่ต้องซิปสิ่งของแล้วโอนย้าย" หมายความว่าบุคคลนั้นไม่มีสิทธิ์เข้าถึงเชลล์ไปยังเครื่องระยะไกล
Steen Schütt

11

ไม่สามารถทำได้ด้วยโปรแกรม ftp ปกติเนื่องจาก mput ไม่ได้ใช้การเรียกซ้ำ คุณสามารถใช้ ncftp แล้วเรียก 'mput -r folder'

ด้วยความปรารถนาดีเฟเบียน


นั่นคือสิ่งที่ฉันทำเมื่อเร็ว ๆ นี้ในกล่อง RHEL 5 ในแพ็คเกจ EPEL ไฟล์เรียกทำงานนั้นมีชื่อว่า ncftpput
Suppressingfire

ไม่สามารถเปลี่ยนแปลงอะไรในการกำหนดค่าเซิร์ฟเวอร์ ฉันแค่ผู้ใช้ ...

ขึ้นอยู่กับลูกค้าของคุณ ไม่ได้อยู่บนเซิร์ฟเวอร์
halfdan

ฉันชอบที่จะทำแบบนี้ ขอขอบคุณ.
Mojtaba Rezaeian

11

ฉันทำสคริปต์ทุบตี:

#!/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

และเรียกมันว่าด้วย

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

ดูเหมือนว่าจะทำงาน



-1

เปิด powershell cd ไปยังไดเรกทอรีที่คุณต้องการอัปโหลดรันคำสั่งต่อไปนี้:

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

วางผลลัพธ์ลงในหน้าต่าง ftp ของคุณ สนุก. อย่าลืมเพิ่ม mput * เพื่อถ่ายโอนไฟล์ทั้งหมดจากไดเรกทอรีฐาน


6
PowerShell ทำงานบนระบบ Unix ตั้งแต่เมื่อใด
Michael Hampton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.