ฉันพยายาม 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
ตามที่ระบุไว้ในความคิดเห็น