ปรับแต่งไฟล์ด้วย FTP


11

ฉันพยายามเข้าถึงไฟล์บันทึกขนาดใหญ่บนเซิร์ฟเวอร์ระยะไกลจากเดสก์ท็อป Windows ของฉัน ฉันเท่านั้นที่มีสิทธิ์เข้าถึง FTP ไปยังเครื่องระยะไกลนี้ไม่ได้ใช้ SSH

ในขณะนี้ฉันใช้ WinSCP เพื่อดึงไฟล์ทั้งหมดลงบน FTP หมายความว่าฉันต้องถ่ายโอนไฟล์เต็มทุกครั้ง อย่างไรก็ตามเนื่องจากเป็นไฟล์บันทึกฉันมีแนวโน้มที่จะต้องการเพียงไม่กี่บรรทัดสุดท้าย

สิ่งนี้น่าผิดหวังอย่างยิ่งเนื่องจากแบนด์วิดท์ของฉันมี จำกัด อย่างมากดังนั้นการถ่ายโอนไฟล์ทั้งหมดใช้เวลาสองสามนาที

หากฉันมีการเข้าถึงแบบเชลล์คุณสามารถทำได้อย่างง่ายดายโดยใช้บางอย่างที่ต้องการtail -100รับ 100 บรรทัดสุดท้าย

ฉันต้องการค้นหาวิธีแก้ไขปัญหานี้ผ่านทาง FTP โปรดทราบว่ามันไม่จำเป็นต้องเป็นหางต่อเนื่องเพียงแค่ครั้งเดียวก็เพียงพอแล้ว

คำตอบ:


8

คุณต้องการทำอะไรสามารถทำได้ด้วย FTP อย่างแน่นอน ในทางเทคนิคแล้วมันเหมือนกันสิ่งที่ไคลเอนต์ FTP ทำเมื่อเริ่มต้นการดาวน์โหลดไฟล์ขัดจังหวะ

แม้ว่าจากมุมมองของผู้ใช้ฉันไม่ทราบว่าหากไคลเอ็นต์ FTP ใด ๆ สนับสนุนการดาวน์โหลดที่ชัดเจนของจำนวนไบต์ต่อท้ายที่ระบุเท่านั้น

แต่ไคลเอนต์ FTP บางรายจะอนุญาตให้คุณดาวน์โหลดเนื้อหาต่อท้ายใหม่ของไฟล์ที่คุณดาวน์โหลดมาก่อนหน้านี้

โดยเฉพาะอย่างยิ่งกับ WinSCP เพียงแค่เริ่มต้นการดาวน์โหลดไฟล์บันทึก จากนั้นในหน้าจอยืนยันการเขียนทับให้เลือกResume (อยู่ในเมนูดรอปดาวน์ของปุ่มNo ) โปรดทราบว่าตัวเลือกนี้มีอยู่ในกรณีที่ไฟล์ต้นฉบับมีขนาดใหญ่กว่าไฟล์ปลายทาง

หากคุณต้องการดาวน์โหลดเพียงไม่กี่บรรทัดสุดท้ายของบันทึกคุณสามารถโกง WinSCP โดยสร้างไฟล์โลคัลจำลองที่มีขนาดเล็กกว่าไฟล์บันทึกก่อนที่จะเริ่มดาวน์โหลด

นอกจากนี้คุณยังสามารถทำให้เคล็ดลับดังกล่าวเป็นไปโดยอัตโนมัติโดยอัตโนมัติ

fsutil file createnew mylog.log 100000000
winscp.com /command "open mysession" "get -resume /path_to_log/mylog.log" "exit"

สำหรับทางเลือกอื่นให้fsutilดูที่การสร้างไฟล์ขนาดใหญ่อย่างรวดเร็วบนระบบ windows?

ด้วยความพยายามมากขึ้นคุณสามารถปรับเปลี่ยนสคริปต์เป็นครั้งแรกเพื่อตรวจสอบขนาดไฟล์บันทึกและคำนวณขนาดไฟล์ดัมมี่โดยอัตโนมัติไม่กี่กิโลไบต์เล็กกว่าขนาดไฟล์บันทึก


0

ฉันไม่รู้ว่าคุณสามารถทำสิ่งนี้ได้อย่างไรโดยใช้ WinSCP และที่จริงอาจเป็นไปไม่ได้ แต่โดยทั่วไปคุณควรใช้คำสั่งREST ดูRFC 3659 ไม่ชัดเจนสำหรับฉันว่าคุณสามารถเริ่มดาวน์โหลดจากไฟล์ช้าหรือคุณต้องได้รับเครื่องหมายแล้ว RFC 3659 ระบุว่าเป็นไปได้อย่างน้อยในโหมด STREAM แต่:

การถ่ายโอนโหมด STREAM ด้วย FILE STRUcture อาจเริ่มใหม่ได้แม้ว่าจะไม่มีการถ่ายโอนเครื่องหมายเริ่มต้นใหม่นอกเหนือจากตัวข้อมูลเอง ทำได้โดยใช้คำสั่ง SIZE หากจำเป็นร่วมกับคำสั่ง RESTART (REST) ​​และหนึ่งในคำสั่งถ่ายโอนไฟล์มาตรฐาน


0

ฉันไม่ได้ยินเกี่ยวกับซอฟต์แวร์ใด ๆ ที่รองรับความต้องการของคุณ แต่ถ้าคุณเป็นโปรแกรมเมอร์คุณควรเข้าใจวิธีการเขียนในภาษา Perl

ที่นี่ฉันพบตัวอย่างวิธีรับไฟล์ทั้งหมด นี่ไม่ใช่การแก้ไขของคุณ แต่ช่วยให้คุณเข้าใจวิธีการ: http://www.perlmonks.org/?node_id=907019

อีกวิธีหนึ่งสำหรับไลบรารี Net :: FTP: http://search.cpan.org/dist/libnet/Net/FTP.pm

การใช้สิ่งนี้คุณสามารถเปิดการเชื่อมต่อ ftp ไปยังเซิร์ฟเวอร์ (ตัวอย่างแรก) ทำการอนุญาต (ตัวอย่างแรก)

URL ที่สองช่วยให้คุณได้รับส่วนสุดท้ายของไฟล์โดยใช้วิธีการ: -> ascii set โหมดการถ่ายโอนเป็น ascii เพราะนี่คือ logfile -> size (FILE) รับขนาดไฟล์สำหรับการนับที่คุณควรเริ่ม -> รีสตาร์ท (WHERE) coursor ที่จากในไฟล์ที่คุณต้องการเริ่มอ่าน -> read (BUFFER, SIZE [, TIMEOUT]) อ่านส่วน SI ขนาดเล็กลงในตัวแปร BUFFER โดยตรง

ฟังก์ชั่นอื่น: ความยาว (บัฟเฟอร์) จะบอกคุณว่าคุณได้รับข้อมูลมากแค่ไหน หากเป็น ZERO คุณสามารถไปถึง EOF print ("$ BUFFER \ n") เนื้อหาบัฟเฟอร์การพิมพ์แบบง่ายไปยังหน้าจอ

โปรดสังเกตว่านี่ไม่ใช่วิธีแก้ปัญหาที่สมบูรณ์ แต่เป็นวิธีการทำ เหตุผลเดียวที่ฉันเขียนทั้งหมดนี้อาจมีซอฟต์แวร์ไม่พร้อมสำหรับงานของคุณ

หากคุณไม่ทราบวิธีการเขียนโปรแกรมเพียงแค่ถาม stackoverflow.com ไม่ใช่ superuser มีโปรแกรมเมอร์มากมายที่พร้อมให้ความช่วยเหลือ

หากเป็นไปได้ตรวจสอบไซต์ ftp ของคุณรองรับการดาวน์โหลดต่อ ไม่สามารถอ่านส่วนปลายของไฟล์นี้ได้

ความละเอียดบางส่วนอาจเป็นการหมุนเวียนไฟล์บันทึกหนึ่งไฟล์ต่อวันหรือหนึ่งชั่วโมง ขึ้นอยู่กับว่าไฟล์บันทึกเติบโตเร็วแค่ไหน

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