Чи є клієнт, схожий на FTP або FTP, який дозволяє "дельта завантажувати" - тобто завантажувати лише ті частини файлу, які були змінені?


9

Я часто вношу невеликі зміни у досить великі текстові файли через FTP ( CSS-файли для веб-розробки ), і оскільки мій Інтернет-зв’язок жахливо повільний, це дуже болісний процес.

Навіть якщо я зміню лише один символ файлу, мені все одно доведеться сидіти і чекати значний час, поки весь файл буде повторно завантажений на сервер.

Чи я можу редагувати віддалені файли на своєму локальному комп'ютері, і коли я зберігаю файл, завантажую лише ті частини файлу, які змінилися ?

Редагувати: Я думаю, мені в даний час було незрозуміло, як я використовую FTP-клієнт. В основному я відкриваю віддалений файл через SFTP за допомогою WinSCP. WinSCP зберігає його в папці tmp, запускає Sublime Text і я починаю його редагувати. Коли я натискаю на збереження, WinSCP автоматично завантажує файл. Я ніколи фактично не зберігаю файл постійно на своєму комп’ютері - все робиться через тимчасову папку WinSCP. Ось чому я шукаю рішення, яке можна використати таким чином "натисніть і біжіть".


Попереднє обговорення

Раніше я публікував це запитання на ServerFault, де пропонувалося використовувати щось на зразок git, проте, як я пояснив:

За допомогою git чи подібного інструменту для версії я повинен би взяти на себе зобов'язання кожного разу, коли я зберігаю файл, правда? Навіть якщо це можна зробити автоматично (тобто, якби у мене був макрос, який створив Ctrl-S у збереженому файлі Sublime Text і виконав одночасне натискання git), я можу зробити 50 - 100 крихітних редагувань CSS-файлу на годину; напевно, я б закінчився журналом фіксованого спаму? Також рішення git є негнучким, оскільки покладається на файл, який я редагую, є частиною git repo.

Єдине рішення, про яке я зараз можу придумати, - це якийсь зломний процес з використанням rsync, але навіть тоді це дуже хитро:

  1. Я завантажую потрібні файли на свій комп’ютер (через FTP / rsync / що завгодно).
  2. Я відкриваю файл у (наприклад) Sublime Text і починаю редагувати.
  3. Фоновий процес - це моніторинг папки для модифікації файлів. Коли я зберігаю файл, цей процес миттєво запускає операцію rsync з мого комп'ютера на сервер, передаючи змінені частини файлу.

Однак мені потрібно вручну налаштувати або вказати шляхи до віддалених файлів або каталогів, інакше локальний скрипт rsync не знатиме, куди слід синхронізувати файли, тому цей метод все ще досить негнучкий. Цей метод не дозволить мені миттєво переглядати випадковий файл, відкривати його та зберігати його, як це робить клієнт FTP.

Також немає видимих ​​відгуків, таких як панель прогресу завантаження за допомогою цього методу.


7
Використання git - це справді правильна відповідь. Що ви шукаєте тут - це спосіб поганої практики. Що робити, якщо ви робите щось не так і ламаєте речі? Git дає відкати.
TRiG

1
Я не погоджуюсь. Що робити, якщо ви просто хочете змінити один рядок великого текстового файлу, який не є частиною репо? Що робити, якщо ваша організація не дозволяє чи не підтримує git? Моє використання полягає в тому, що я вношу сотні крихітних змін у файли, які віддалено розміщуються, і які потрібно редагувати "наживо" та "на місці".
WackGet

Я не маю часу перевірити великий файл зараз, тому розміщую це як коментар, а не відповідь, але перегляньте Beyond Compare - це міжплатформенний графічний графічний інтерфейс, який можна редагувати через FTP / SFTP, і ви можете вибрати рядки для синхронізації. Напевно, все ще не ідеально, але працездатно. Вони також мають безкоштовну пробну версію.
Нік

Відповіді:


7

Vim має вбудований плагін під назвою netrw, який дозволяє Vim редагувати віддалені файли. Rsync - це один із протоколів, який він може використовувати:

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

Звичайно, якщо у вас є доступ SSH до віддаленої машини, а Vim встановлений на ньому, можливо, просто використовувати Vim віддалено. Нано, Emacs та інші редактори з інтерфейсами командного рядка також є варіантами в цьому випадку. Залежно від того, наскільки поганий ваш зв’язок, це може бути не приємним варіантом.


Це все сказало,

внесення сотень крихітних змін у файли, які віддалено розміщуються та які потрібно редагувати "наживо" та "на місці"

без надійної системи відкату, наприклад, що може забезпечити git, ви та ваша організація просто благаєте про агонію, коли ви робите неминучі помилки, які можуть цілком непомітно пройти, поки ви не забудете саме те, що робили.


Здається, SSH є очевидною відповіддю, якщо на сервері працює будь-яка версія Linux. Якщо він уже не працює на сервері, я натискаю адміністратора сервера, щоб налаштувати це.
Чарльз Бердж

Дякую вам обом; У мене є повний доступ до SSH і можу налаштувати все необхідне на сервері. Я не можу віддалено використовувати Vim, оскільки затримка часто дуже висока. Також я хотів би мати можливість використовувати редактори настільних ПК, як Sublime. Я думаю, що мені було незрозуміло щодо того, як я використовую свій FTP-клієнт на даний момент - в основному, я відкриваю віддалений файл за допомогою WinSCP, починаю його редагувати, і коли я натискаю збереження, WinSCP автоматично завантажує файл. Я фактично не завантажую його в будь-який постійний каталог на моєму комп’ютері - все робиться через тимчасову папку WinSCP. Я відредагую своє запитання і уточню.
WackGet

@WackGet Vim теж працює на робочому столі, його називають GVim. Cream - це особлива конфігурація Vim, яка повинна бути порівняно простою для тих, хто більше використовується для таких редакторів, як Sublime, Notepad або Textmate. Те, що ви робите з WinSCP, - це по суті, як працює netrw. Він завантажується у тимчасове місце розташування, чекає збереження, після чого записує його назад на віддалений сервер, використовуючи той протокол, який ви вказали.
8bittree

@ 8bittree Дякую, це, безумовно, стане в нагоді. Я не позначатиму це як відповідь на моє оригінальне запитання, оскільки воно обмежує вас у використанні плагіна на основі Vim. Якщо хтось міг би реалізувати передачу дельти, подібної до netrw, у FTP або FTP-подібний клієнт, то це було б ідеально. Наразі я цього ще не знайшов, але сподіваюся, що він існує.
WackGet

1

Beyond Compare - це різний інструмент, який може порівнювати та об’єднувати папки та файли; FTP-сервери також підтримуються, і ними можна керувати, як локальна папка. Це власне, довічна ліцензія на одну установку коштує 30 доларів для стандартного видання (з FTP) або 60 доларів для професійного видання (з SFTP). Він працює на Windows, Mac OS та Linux. Особисто я розробляю свій веб-сайт на домашньому комп’ютері та завантажую зміни на свій веб-сервер, коли я щаслива. Я переглядаю зміни вручну з Beyond Compare, але це теж може бути автоматизовано. Ви можете спробувати і побачити, чи завантажує він лише повні файли або фрагменти змін; Я не впевнений у цьому.


Більше порівняння - приголомшливо - ідеально, якщо у вас немає доступу до SSH, але вам все одно потрібно переконатися, що файли синхронізовані на віддаленому сервері (підтримується FTP через SSL)
Sam Heuck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.