ฉันพยายาม ftp โฟลเดอร์โดยใช้ไคลเอนต์บรรทัดคำสั่ง ftp แต่จนถึงตอนนี้ฉันสามารถใช้ 'รับ' เพื่อรับไฟล์แต่ละไฟล์ได้
ฉันพยายาม ftp โฟลเดอร์โดยใช้ไคลเอนต์บรรทัดคำสั่ง ftp แต่จนถึงตอนนี้ฉันสามารถใช้ 'รับ' เพื่อรับไฟล์แต่ละไฟล์ได้
คำตอบ:
คุณสามารถพึ่งพา wget ซึ่งมักจะจัดการ ftp ได้อย่างถูกต้อง (อย่างน้อยในประสบการณ์ของฉันเอง) ตัวอย่างเช่น:
wget -r ftp://user:pass@server.com/
นอกจากนี้คุณยังสามารถใช้-mซึ่งเหมาะสำหรับการมิเรอร์ -r -N -l infขณะนี้เป็นเวลาเทียบเท่ากับ
หากคุณมีอักขระพิเศษบางอย่างในรายละเอียดข้อมูลรับรองคุณสามารถระบุ--userและ--passwordอาร์กิวเมนต์เพื่อให้ทำงานได้ ตัวอย่างที่มีการเข้าสู่ระบบแบบกำหนดเองที่มีอักขระเฉพาะ:
wget -r --user="user@login" --password="Pa$$wo|^D" ftp://server.com/
แก้ไข
ตามที่ชี้โดย @asmaier ให้ระวังว่าแม้ว่า-rจะเป็นการเรียกซ้ำ แต่ก็มีระดับสูงสุดเริ่มต้นที่ 5:
-r --recursive Turn on recursive retrieving. -l depth --level=depth Specify recursion maximum depth level depth. The default maximum depth is 5.
หากคุณไม่ต้องการที่จะพลาดตำบลย่อยให้ใช้ตัวเลือกการมิเรอร์ดีกว่า-m:
-m --mirror Turn on options suitable for mirroring. This option turns on recursion and time-stamping, sets infinite recursion depth and keeps FTP directory listings. It is currently equivalent to -r -N -l inf --no-remove-listing.
wget -m( --mirror) wget -rถูก จำกัด ที่ความลึกการเรียกซ้ำ 5 โดยค่าเริ่มต้น
--userและ--passwordบน Red Hat ด้วย wget ของฉันคือGNU Wget 1.11.4 Red Hat modifiedฉันสงสัยว่ามันเป็นสิ่งที่รุ่นหรือสิ่ง distro แล้ว ...
-l 0ดังนั้นจึงไม่จำเป็นต้องใช้--mirrorซึ่งอาจมีผลข้างเคียงที่ไม่พึงประสงค์เช่นไฟล์.
wget --ask-password -rl 99 ftp://user@server.comฉันใช้ วิธีนี้จะมองไม่เห็นรหัสผ่านpsและไม่อยู่ในประวัติ แน่นอนโดยธรรมชาติของ ftp มันถูกส่งไปยังเซิร์ฟเวอร์แบบไม่เข้ารหัส
$) เช่น--user='user' --password='pa$$word'
เพียงเพื่อเติมเต็มคำตอบที่ได้รับจาก Thibaut Barrère
ฉันใช้
wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory
หมายเหตุเครื่องหมายสแลชคู่หลังชื่อเซิร์ฟเวอร์ หากคุณไม่ใส่เครื่องหมายทับเป็นพิเศษพา ธ จะสัมพันธ์กับโฮมไดเร็กทอรีของผู้ใช้
-nH หลีกเลี่ยงการสร้างไดเรกทอรีที่ตั้งชื่อตามชื่อเซิร์ฟเวอร์-nc หลีกเลี่ยงการสร้างไฟล์ใหม่หากไฟล์นั้นมีอยู่ในปลายทางแล้ว (เพิ่งถูกข้ามไป) --cut-dirs=5อนุญาตให้นำเนื้อหาของ / absolute / path / to / directory และนำไปไว้ในไดเรกทอรีที่คุณเรียกใช้ wget หมายเลข 5 ใช้เพื่อกรอง 5 องค์ประกอบของเส้นทาง เครื่องหมายทับสองครั้งหมายถึงส่วนประกอบเพิ่มเติม--ftp-user=USER --ask-password
ncftp -u <user> -p <pass> <server>
ncftp> mget directory
open ftp://USERNAME:PASSWORD@HOSTหลังจากเริ่ม ncftp …
wgetและเร็วกว่าในโหมด TAR ขอบคุณ!
หากมีการติดตั้งในเครื่องของคุณใช้lftp mirror dirและคุณทำเสร็จแล้ว ดูความคิดเห็นโดย Ciro ด้านล่างหากคุณต้องการดาวน์โหลดไดเรกทอรีซ้ำ
mirror -R dirอัปโหลด / อัปเดตไดเรกทอรีแบบเรียกซ้ำ
mirror ./สำหรับการดาวน์โหลดไฟล์และโฟลเดอร์ทั้งหมดซ้ำในเส้นทางปัจจุบัน
mirrorสำหรับไดเรกทอรีปัจจุบันและมันเป็นโฟลเดอร์ย่อย
หากคุณสามารถใช้scpแทนการftpที่-rตัวเลือกที่จะทำเพื่อคุณ ฉันจะตรวจสอบเพื่อดูว่าคุณสามารถใช้กลไกการถ่ายโอนไฟล์ที่ทันสมัยกว่า FTP ได้หรือไม่
scpจะยังคงพยายามใช้ ssh ซึ่งจะไม่ทำงานหากคุณมีข้อมูลรับรอง FTP เท่านั้น รู้สึกแปลก ๆ ที่ตอบสนองต่อความคิดเห็นจากปี 2008 โดยบอกว่าเทคโนโลยีที่ฉันติดอยู่นั้นไม่ทันสมัย :( เก่ามากปี 2008 ฉันอายุครบ 18 ปีในวันที่คุณโพสต์ความคิดเห็นของคุณ
ใช้ WGet แทน รองรับโปรโตคอล HTTP และ FTP
wget -r ftp://mydomain.com/mystuff
โชคดี!
การอ้างอิง: http://linux.about.com/od/commands/l/blcmdl1_wget.htm
มี 'ncftp' ซึ่งสามารถติดตั้งใน linux ได้ สิ่งนี้ทำงานบนโปรโตคอล FTP และสามารถใช้เพื่อดาวน์โหลดไฟล์และโฟลเดอร์แบบเรียกซ้ำ ทำงานบน linux มีการใช้งานและทำงานได้ดีสำหรับการถ่ายโอนโฟลเดอร์ / ไฟล์ซ้ำ
ตรวจสอบลิงค์นี้ ... http://www.ncftp.com/
หากคุณสามารถทำได้ฉันขอแนะนำให้คุณtarและbzip(หรือgzipอะไรก็ตามที่ลอยอยู่ในเรือของคุณ) ไดเรกทอรีบนเครื่องระยะไกล - สำหรับไดเรกทอรีที่มีขนาดใหญ่ ๆ การประหยัดแบนด์วิดท์อาจคุ้มค่ากับเวลาที่จะซิป / เปิดเครื่องรูด
หากคุณต้องการติดกับบรรทัดคำสั่ง FTP คุณควรลอง NcFTP จากนั้นคุณสามารถใช้ get -R เพื่อรับโฟลเดอร์แบบเรียกซ้ำ นอกจากนี้คุณยังจะได้รับความสำเร็จ
wget -r ftp://url
ทำงานได้อย่างสมบูรณ์แบบสำหรับ Redhat และ Ubuntu
ftpคุณไม่ควรใช้ เหมือนtelnetว่ามันไม่ได้ใช้โปรโตคอลที่ปลอดภัยและรหัสผ่านจะถูกส่งเป็นข้อความที่ชัดเจน สิ่งนี้ทำให้บุคคลที่สามสามารถบันทึกชื่อผู้ใช้และรหัสผ่านของคุณได้ง่าย
หากต้องการคัดลอกไดเรกทอรีระยะไกลจากระยะไกลตัวเลือกเหล่านี้จะดีกว่า:
rsyncเป็นเครื่องมือที่เหมาะสมที่สุดหากคุณสามารถเข้าสู่ระบบผ่านsshเพราะมันคัดลอกเฉพาะความแตกต่างและสามารถรีสตาร์ทได้อย่างง่ายดายในช่วงกลางในกรณีที่การเชื่อมต่อหยุด
ssh -r เป็นตัวเลือกที่ดีที่สุดอันดับสองในการคัดลอกโครงสร้างไดเรกทอรีซ้ำ
ดู:
สลับพร้อมท์โดยคำสั่ง PROMPT
การใช้งาน:
ftp>cd /to/directory
ftp>prompt
ftp>mget *
mgetมันไม่เวียนเกิดเลย คำตอบจาก 22 กันยายน '08 ที่ 9:01 Thibaut Barrèreง่ายต่อการเข้าใจ แต่ต้องเพิ่มตัวเลือก-l 0ตามที่ระบุไว้ในความคิดเห็น