มีไคลเอนต์คล้าย FTP หรือ FTP ซึ่งอนุญาตให้“ อัปโหลดเดลตา” หรือไม่เช่นอัปโหลดเฉพาะส่วนของไฟล์ที่มีการเปลี่ยนแปลงหรือไม่


9

ฉันมักจะทำการเปลี่ยนแปลงเล็กน้อยในไฟล์ข้อความขนาดใหญ่พอสมควรผ่านทาง FTP ( ไฟล์ CSS สำหรับการพัฒนาเว็บ ) และเนื่องจากการเชื่อมต่ออินเทอร์เน็ตของฉันช้ามากมันเป็นกระบวนการที่เจ็บปวดมาก

แม้ว่าฉันจะเปลี่ยนเพียงหนึ่งตัวอักษรของไฟล์ฉันยังคงต้องนั่งรอเป็นเวลานานในขณะที่ไฟล์ทั้งหมดได้รับการอัปโหลดใหม่ไปยังเซิร์ฟเวอร์

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

แก้ไข:ฉันคิดว่าฉันไม่ชัดเจนเกี่ยวกับวิธีการใช้ไคลเอนต์ FTP ของฉันในขณะนี้ โดยทั่วไปฉันเปิดไฟล์ระยะไกลผ่าน SFTP โดยใช้ WinSCP WinSCP บันทึกลงในโฟลเดอร์ tmp เปิด Sublime Text และเริ่มแก้ไข เมื่อฉันกดบันทึก WinSCP จะอัปโหลดไฟล์อีกครั้งโดยอัตโนมัติ ฉันไม่เคยบันทึกไฟล์อย่างถาวรในคอมพิวเตอร์ของฉัน - ทุกอย่างทำผ่านโฟลเดอร์ temp ของ WinSCP นั่นเป็นเหตุผลที่ฉันกำลังมองหาวิธีแก้ปัญหาที่สามารถใช้ในลักษณะ "hit and run"


การสนทนาก่อนหน้า

ก่อนหน้านี้ฉันได้โพสต์คำถามนี้ไว้ที่ ServerFaultซึ่งแนะนำให้ใช้ git อย่างที่แนะนำ แต่ตามที่อธิบาย:

ด้วย git หรือเครื่องมือ versioning ที่คล้ายกันฉันต้องทำคอมมิททุกครั้งที่บันทึกไฟล์ใช่มั้ย แม้ว่าจะสามารถทำได้โดยอัตโนมัติ (เช่นถ้าฉันมีแมโครซึ่งทำให้ Ctrl-S ในไฟล์บันทึกข้อความ Sublime และดำเนินการกด git ในเวลาเดียวกัน) ฉันอาจทำการแก้ไข CSS เล็ก ๆ 50 - 100 ไฟล์ต่อชั่วโมง แน่นอนฉันจะจบลงด้วยบันทึกการส่งสแปมหรือไม่ อีกทั้งโซลูชัน git นั้นไม่ยืดหยุ่นเนื่องจากต้องอาศัยไฟล์ใดก็ตามที่ฉันกำลังแก้ไขซึ่งเป็นส่วนหนึ่งของ repo git

ทางออกเดียวที่ฉันนึกได้ตอนนี้คือกระบวนการแฮ็กอัพบางชนิดโดยใช้ rsync แต่ถึงอย่างนั้นมันก็ยุ่งมาก:

  1. ฉันดาวน์โหลดไฟล์ฉันต้องการคอมพิวเตอร์ของฉัน (ผ่าน FTP / rsync / อะไรก็ตาม)
  2. ฉันเปิดไฟล์ใน (เช่น) Sublime Text และเริ่มทำการแก้ไข
  3. กระบวนการพื้นหลังกำลังตรวจสอบโฟลเดอร์สำหรับการแก้ไขไฟล์ เมื่อฉันบันทึกไฟล์กระบวนการดังกล่าวจะทริกเกอร์การดำเนินการ rsync จากคอมพิวเตอร์ของฉันไปยังเซิร์ฟเวอร์โดยโอนส่วนที่เปลี่ยนแปลงของไฟล์

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

นอกจากนี้ยังไม่มีข้อเสนอแนะที่มองเห็นได้เช่นแถบความคืบหน้าในการอัปโหลดด้วยวิธีนี้


7
การใช้คอมไพล์เป็นคำตอบที่ถูกต้องจริงๆ สิ่งที่คุณกำลังมองหาที่นี่เป็นวิธีแก้ปัญหาสำหรับการปฏิบัติที่ไม่ดี ถ้าคุณทำสิ่งผิดปกติและทำลายสิ่งต่างๆ Git ให้คุณย้อนกลับ
TRiG

1
ฉันไม่เห็นด้วย. ถ้าคุณต้องการเปลี่ยนไฟล์ข้อความขนาดใหญ่บรรทัดเดียวซึ่งไม่ได้เป็นส่วนหนึ่งของ repo ล่ะ เกิดอะไรขึ้นถ้าองค์กรของคุณไม่อนุญาตหรือสนับสนุน git กรณีการใช้งานของฉันคือฉันกำลังทำการเปลี่ยนแปลงไฟล์เล็ก ๆ หลายร้อยไฟล์ซึ่งโฮสต์อยู่ในระยะไกลและต้องแก้ไข "สด" และ "เข้าแทนที่"
WackGet

ฉันไม่มีเวลาทดสอบไฟล์ขนาดใหญ่ในขณะนี้ดังนั้นการโพสต์สิ่งนี้เป็นความคิดเห็นไม่ใช่คำตอบ แต่ดูเป็น Beyond Compare - เป็นไฟล์ GUI ข้ามแพลตฟอร์มที่สามารถแก้ไขผ่าน FTP / SFTP และคุณสามารถ เลือกบรรทัดที่จะซิงค์ อาจยังไม่เหมาะ แต่สามารถใช้การได้ พวกเขาได้ทดลองใช้ฟรีด้วย
Nick

คำตอบ:


7

Vim มีปลั๊กอินในตัวที่เรียกว่า netrw ซึ่งอนุญาตให้ Vim แก้ไขไฟล์ระยะไกล Rsync เป็นหนึ่งในโปรโตคอลที่สามารถใช้:

:e rsync://user@hostname:port/path
:w rsync://user@hostname:port/path

แน่นอนถ้าคุณมีการเข้าถึง SSH ไปยังเครื่องระยะไกลและติดตั้ง Vim ไว้บนเครื่องมันอาจจะง่ายกว่าถ้าใช้ Vim จากระยะไกล Nano, Emacs และบรรณาธิการอื่น ๆ ที่มีอินเตอร์เฟสบรรทัดคำสั่งเป็นตัวเลือกในกรณีนี้ ขึ้นอยู่กับว่าการเชื่อมต่อของคุณจะแย่แค่ไหนนี่อาจไม่ใช่ตัวเลือกที่น่าพอใจ


ที่ทุกคนพูดว่า

การเปลี่ยนแปลงไฟล์เล็ก ๆ หลายร้อยไฟล์ซึ่งโฮสต์อยู่ในระยะไกลและต้องแก้ไข "สด" และ "เข้าแทนที่"

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


SSH ดูเหมือนจะเป็นคำตอบที่ชัดเจนหากเซิร์ฟเวอร์ใช้ Linux เวอร์ชันใด ๆ หากยังไม่ได้ทำงานบนเซิร์ฟเวอร์ฉันจะกดผู้ดูแลเซิร์ฟเวอร์เพื่อตั้งค่า
Charles Burge

ขอบคุณทั้งคู่ ฉันมีสิทธิ์เข้าถึง SSH เต็มรูปแบบและสามารถกำหนดค่าสิ่งที่จำเป็นบนเซิร์ฟเวอร์ ฉันไม่สามารถใช้ Vim จากระยะไกลได้เนื่องจากความล่าช้ามักสูงมาก นอกจากนี้ฉันต้องการใช้โปรแกรมแก้ไขเดสก์ท็อปเช่น Sublime ฉันคิดว่าฉันไม่ชัดเจนเกี่ยวกับวิธีการใช้ไคลเอนต์ FTP ของฉันในขณะนี้ - โดยทั่วไปฉันเปิดไฟล์ระยะไกลโดยใช้ WinSCP เริ่มแก้ไขมันและเมื่อฉันกดบันทึก WinSCP จะอัปโหลดไฟล์อีกครั้งโดยอัตโนมัติ ฉันไม่ได้ดาวน์โหลดลงในไดเรกทอรีถาวรบนคอมพิวเตอร์ของฉัน - ทุกอย่างทำผ่านโฟลเดอร์ temp ของ WinSCP ฉันจะแก้ไขคำถามและชี้แจง
WackGet

@WackGet Vim ทำงานบนเดสก์ท็อปด้วยชื่อ GVim Creamเป็นรูปแบบเฉพาะของ Vim ที่ค่อนข้างง่ายสำหรับผู้ที่คุ้นเคยกับบรรณาธิการเช่น Sublime, Notepad หรือ Textmate สิ่งที่คุณทำกับ WinSCP นั้นสำคัญว่า netrw ทำงานอย่างไร มันดาวน์โหลดไปยังตำแหน่งชั่วคราวรอให้คุณบันทึกจากนั้นเขียนมันกลับไปที่เซิร์ฟเวอร์ระยะไกลโดยใช้โปรโตคอลที่คุณระบุ
8bittree

@ 8bittree ขอบคุณสิ่งนี้จะมีประโยชน์อย่างแน่นอน ฉันจะไม่ทำเครื่องหมายคำถามนี้เป็นคำตอบสำหรับคำถามเดิมของฉันเพราะจะ จำกัด ให้คุณใช้ปลั๊กอินที่ใช้ Vim หากใครบางคนสามารถนำเดลต้าเหมือน netrw ไปใช้กับไคลเอนต์แบบ FTP หรือ FTP ได้นั่นก็จะสมบูรณ์แบบ ขณะนี้ฉันยังไม่พบสิ่งนี้ แต่ฉันหวังว่ามันจะมีอยู่
WackGet

1

Beyond Compareเป็นเครื่องมือ diff ที่สามารถเปรียบเทียบและรวมโฟลเดอร์และไฟล์; รองรับ FTP เซิร์ฟเวอร์ด้วยและสามารถจัดการได้เหมือนโฟลเดอร์ในเครื่อง มันเป็นกรรมสิทธิ์ของใบอนุญาตตลอดชีวิตสำหรับหนึ่งค่าติดตั้ง 30 USD สำหรับรุ่นมาตรฐาน (ด้วย FTP) หรือ 60 USD สำหรับรุ่นมืออาชีพ (พร้อม SFTP) มันทำงานบน Windows, Mac OS และ Linux ส่วนตัวฉันพัฒนาเว็บไซต์ของฉันบนคอมพิวเตอร์ที่บ้านของฉันและอัปโหลดการเปลี่ยนแปลงไปยังเว็บเซิร์ฟเวอร์ของฉันเมื่อฉันมีความสุข ฉันผ่านการเปลี่ยนแปลงด้วยมือกับ Beyond Compare แต่สามารถดำเนินการได้อัตโนมัติ คุณสามารถลองและดูว่ามันอัปโหลดเฉพาะไฟล์ที่สมบูรณ์หรือกลุ่มการเปลี่ยนแปลงหรือไม่ ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้


นอกเหนือจากการเปรียบเทียบนั้นยอดเยี่ยม - สมบูรณ์แบบถ้าคุณไม่มีการเข้าถึง SSH แต่คุณยังต้องตรวจสอบให้แน่ใจว่ามีการซิงค์ไฟล์บนเซิร์ฟเวอร์ระยะไกล (รองรับ FTP ผ่าน SSL)
Sam Heuck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.