Apakah ada klien FTP atau mirip FTP yang memungkinkan "delta uploads" - yaitu hanya mengunggah bagian-bagian file yang telah diubah?

9

Saya sering melakukan perubahan kecil pada file teks yang cukup besar melalui FTP ( file CSS untuk pengembangan web ) dan karena koneksi internet saya sangat lambat, itu adalah proses yang sangat menyakitkan.

Bahkan jika saya mengubah hanya satu karakter file, saya masih harus duduk dan menunggu waktu yang cukup lama sementara seluruh file diunggah kembali ke server.

Apakah ada cara saya bisa mengedit file yang di-host-jarak jauh di komputer lokal saya dan ketika saya menyimpan file, hanya mengunggah bagian-bagian file yang berubah ?

Sunting: Saya pikir saya belum jelas tentang bagaimana saya menggunakan klien FTP saya saat ini. Pada dasarnya, saya membuka file jarak jauh melalui SFTP menggunakan WinSCP. WinSCP menyimpannya ke folder tmp, meluncurkan Sublime Text dan saya mulai mengeditnya. Ketika saya menekan save, WinSCP mengunggah ulang file secara otomatis. Saya tidak pernah benar-benar menyimpan file secara permanen di komputer saya - semuanya dilakukan melalui folder temp WinSCP. Itu sebabnya saya mencari solusi yang dapat digunakan dalam cara tipe "hit and run" ini.


Diskusi Sebelumnya

Saya sebelumnya memposting pertanyaan ini di ServerFault di mana menggunakan sesuatu seperti git disarankan, namun seperti yang saya jelaskan:

Dengan git atau alat versi yang serupa saya harus membuat komit setiap kali saya menyimpan file, kan? Bahkan jika itu dapat dilakukan secara otomatis (yaitu jika saya memiliki makro yang membuat Ctrl-S di Sublime Text menyimpan file dan mengeksekusi git push pada saat yang sama), saya mungkin membuat 50 - 100 suntingan kecil file CSS per jam; pasti saya akan berakhir dengan log komit yang dimuntahkan? Juga solusi git tidak fleksibel karena bergantung pada file apa pun yang saya edit menjadi bagian dari repo git.

Satu-satunya solusi yang dapat saya pikirkan sejauh ini adalah beberapa jenis proses peretasan menggunakan rsync tetapi meskipun begitu, itu sangat fiddly:

  1. Saya mengunduh file yang saya butuhkan ke komputer saya (via FTP / rsync / apa pun).
  2. Saya membuka file di (mis.) Sublime Text dan mulai mengedit.
  3. Proses latar belakang memantau folder untuk modifikasi file. Ketika saya menyimpan file, proses itu langsung memicu operasi rsync dari komputer saya ke server, mentransfer bagian file yang diubah.

Namun, saya perlu mengatur secara manual atau menentukan file jarak jauh atau jalur direktori atau skrip rsync lokal tidak akan tahu ke mana harus mensinkronkan file sehingga metode ini masih cukup tidak fleksibel. Metode ini tidak akan membiarkan saya langsung mencari file acak, membukanya dan menyimpannya seperti yang dilakukan klien FTP.

Tidak ada umpan balik yang terlihat seperti bilah kemajuan unggahan dengan metode ini.

WackGet
sumber
7
Menggunakan git benar-benar jawaban yang tepat. Apa yang Anda cari di sini adalah solusi untuk praktik yang buruk. Bagaimana jika Anda melakukan sesuatu yang salah dan merusak barang-barang? Git memberi Anda kembalikan.
TRiG
1
Saya tidak setuju. Bagaimana jika Anda hanya ingin mengubah satu baris file teks besar yang bukan bagian dari repo? Bagaimana jika organisasi Anda tidak mengizinkan atau mendukung git? Kasus penggunaan saya adalah bahwa saya membuat ratusan perubahan kecil pada file yang di-host dari jarak jauh dan yang harus diedit "langsung" dan "di tempat".
WackGet
Saya tidak punya waktu untuk menguji pada file besar sekarang, jadi posting ini sebagai komentar, bukan jawaban, tetapi lihat Beyond Compare - ini adalah file GUI lintas-platform yang dapat diedit melalui FTP / SFTP dan Anda dapat pilih jalur mana yang akan disinkronkan. Mungkin masih tidak ideal, tetapi bisa diterapkan. Mereka memiliki uji coba gratis juga.
Nick

Jawaban:

7

Vim memiliki plugin bawaan bernama netrw, yang memungkinkan Vim mengedit file jarak jauh. Rsync adalah salah satu protokol yang dapat digunakan:

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

Tentu saja, jika Anda memiliki akses SSH ke mesin jarak jauh, dan Vim diinstal di dalamnya, mungkin lebih mudah untuk hanya menggunakan Vim dari jarak jauh. Nano, Emacs, dan editor lain dengan antarmuka baris perintah juga merupakan opsi dalam kasus itu. Namun, tergantung seberapa buruk koneksi Anda, ini mungkin bukan opsi yang menyenangkan.


Itu semua berkata,

membuat ratusan perubahan kecil pada file yang di-host dari jarak jauh dan yang harus diedit "langsung" dan "di tempat"

tanpa sistem rollback yang andal seperti apa yang dapat disediakan git adalah Anda dan organisasi Anda hanya memohon penderitaan ketika Anda melakukan kesalahan yang tak terhindarkan yang mungkin tidak diketahui sampai Anda lupa persis apa yang Anda lakukan.

8bree
sumber
SSH tampaknya menjadi jawaban yang jelas jika server menjalankan versi Linux apa pun. Jika belum berjalan di server, saya akan menekan admin server untuk mengaturnya.
Charles Burge
Terima kasih semuanya; Saya memiliki akses SSH penuh dan dapat mengkonfigurasi apa pun yang diperlukan di server. Saya tidak dapat menggunakan Vim dari jarak jauh karena latensi seringkali sangat tinggi. Saya juga ingin dapat menggunakan editor desktop seperti Sublime. Saya pikir saya tidak jelas tentang bagaimana saya menggunakan klien FTP saya saat ini - pada dasarnya, saya membuka file jarak jauh menggunakan WinSCP, mulai mengeditnya, dan ketika saya menekan save, WinSCP mengunggah ulang file secara otomatis. Saya sebenarnya tidak mengunduhnya ke direktori permanen di komputer saya - semuanya dilakukan melalui folder temp WinSCP. Saya akan mengedit pertanyaan saya dan menjelaskan.
WackGet
@WackGet Vim juga berfungsi di desktop, disebut GVim. Cream adalah konfigurasi Vim tertentu yang seharusnya relatif mudah bagi mereka yang lebih terbiasa dengan editor seperti Sublime, Notepad, atau Textmate. Apa yang Anda lakukan dengan WinSCP pada dasarnya adalah cara kerja netrw. Ia mengunduh ke lokasi sementara, menunggu Anda untuk menyimpan, lalu menulisnya kembali ke server jarak jauh, menggunakan protokol apa pun yang Anda tentukan.
8bittree
@ 8bittree Terima kasih, ini pasti akan berguna. Saya tidak akan menandai yang ini sebagai jawaban untuk pertanyaan awal saya karena membatasi Anda untuk menggunakan plugin berbasis Vim. Jika seseorang dapat mengimplementasikan transfer delta seperti netrw ke klien FTP atau FTP, maka itu akan menjadi sempurna. Saat ini saya belum menemukan ini tetapi saya berharap itu ada.
WackGet
1

Beyond Compare adalah alat diff yang dapat membandingkan dan menggabungkan folder dan file; Server FTP juga didukung dan dapat ditangani seperti folder lokal. Ini adalah hak milik, lisensi seumur hidup untuk satu kali pemasangan dikenakan biaya 30 USD untuk edisi standar (dengan FTP) atau 60 USD untuk edisi profesional (dengan SFTP). Ini berjalan pada Windows, Mac OS dan Linux. Secara pribadi saya mengembangkan situs web saya di komputer rumah saya dan mengunggah perubahan ke server Web saya ketika saya senang. Saya melalui perubahan dengan tangan dengan Beyond Compare tetapi ini bisa otomatis juga. Anda bisa mencobanya dan melihat apakah itu hanya mengunggah file atau potongan perubahan; Saya tidak yakin tentang hal itu.

Stéphane Tréboux
sumber
Melampaui perbandingan itu luar biasa - sempurna jika Anda tidak memiliki akses SSH, tetapi Anda masih perlu memastikan file disinkronkan pada server jarak jauh (FTP over SSL didukung)
Sam Heuck