Есть ли какое-либо программное обеспечение для синхронизации файлов, которое может синхронизировать все мои серверы/клиенты (без графического интерфейса)?

У меня есть два облачных сервера Ubuntu (без графического интерфейса), два ноутбука Ubuntu (с графическим интерфейсом) и один рабочий стол Windows. Когда я пишу веб-код, мне нравится, чтобы код (в папке www) синхронизировался на всех моих устройствах, чтобы при изменении HTML-файла на моем ноутбуке он автоматически менялся на сервере (и на другом ноутбуке). Я знаю, что это ужасная практика, потому что это позволит мне испортить мои веб-страницы, но мне все равно, потому что это удобнее, чем SFTP-соединение с моим сервером каждый раз, когда я меняю страницу. Мне также не нравится фиксировать и синхронизировать каждое небольшое изменение при обновлении моего личного кода.

Есть ли какое-либо программное обеспечение для синхронизации файлов, которое может синхронизировать (папку www) на всех моих серверах/клиентах?

Я хочу что-то, что НЕ требует от меня установки графического интерфейса на моих облачных серверах.

Мое идеальное программное обеспечение для синхронизации файлов должно работать на терминале Ubuntu следующим образом:

$: filesync /var/www -username -password

ИЛИ ЖЕ

$: filesync /var/www MyCloudServer.net -password

где «MyCloudServer.net» действует как сервер синхронизации/ретрансляции.

Есть ли такой софт? И если нет, то есть ли способ сделать так, чтобы мой ноутбук автоматически пересылал по SFTP любые измененные HTML-файлы в моей папке /var/www на мой сервер в режиме реального времени, и мне не нужно было ничего нажимать?

Ответы (2)

BitTorrent-синхронизация

Установите его на свой клиент и сервер, и он будет синхронизировать выбранные вами папки с историей синхронизации на случай возникновения ошибок.

Синхронизация пропускает облако и находит кратчайший путь между устройствами при передаче данных. Нет Облака. Нет загрузки на сторонние сервера. Просто быстрая и простая синхронизация файлов.

Синхронизация может обрабатывать файлы любого размера. Легко синхронизируйте и делитесь папками, содержащими гигабайты (или терабайты) данных.

Синхронизируйте папки между несколькими платформами и операционными системами. Синхронизация доступна для устройств OS X, Windows, Linux, NAS и других устройств.

С вашим сервером Ubuntu вы можете обратиться к этому руководству , но в основном:

  1. Добавьте репозиторий:add-apt-repository ppa:tuxpoldo/btsync
  2. Установите его:apt-get update && apt-get install btsync
  3. Настройте его, ответив на ряд вопросов, которые он задает во время установки. Если вы допустили какие-либо ошибки, просто перенастройте ( dpkg-reconfigure btsync)
  4. Предоставьте btsyncпользователю права доступа к папке, которую вы хотите синхронизировать ( chown you:btsync && chmod 775)

Как вы и просили, графического интерфейса как такового нет, но проще настроить синхронизацию, если вы используете веб-интерфейс. Запуск btsyncпроцесса устанавливает интерфейс http://your_ip_or_domain:8888, который аутентифицируется с помощью имени пользователя и пароля, которые вы указали во время установки. Затем вы можете использовать это для управления синхронизацией ваших папок.

Могу ли я предположить, что гораздо лучшим способом работы было бы использование системы контроля версий, такой как mercurial (hg) или git , и когда вы довольны своими изменениями на одном компьютере, просто зафиксируйте и отправьте репозиторий, если на других ваших машинах есть запущенная задача chron, которая выполняет извлечение и обновление, говорит, что каждые 10 минут они автоматически будут использовать последнюю версию в течение 10 минут.

Использование VCS имеет много преимуществ и означает, что если вы ошибетесь, вы можете откатить изменения, зафиксировать откат, возможно, с дополнительными изменениями, зафиксировать и снова нажать, после чего все готово.

И hg, и git доступны для большинства платформ и предустановлены на многих из них.

Любой профессиональный рабочий процесс должен позволить вам вернуться к прежней работе.

Я ненавижу гита. Я ненавижу совершать коммиты. Я ненавижу вводить свой пароль. Я ненавижу контроль версий.
Я бы предпочел просто делать ежедневное резервное копирование и возвращаться к последнему ежедневному резервному копированию на случай, если что-то пойдет не так, чем тратить свое время на ввод «git commit -m» -обновить-несколько-мелких-вещей-я-не-думаю-мне-нужно-вводить-что-либо-для-обоснования-изменения-какого-либо-кода-на-моем-сервере" ". Каждый раз, когда я хочу отправить и синхронизировать небольшое изменение.
Тогда я желаю вам и вашим работодателям удачи - она ​​вам обоим понадобится. Вы когда-нибудь слышали о брелоке? Нет необходимости в паролях.
Я имею в виду, что для публикации и обмена кодом я использую git после завершения больших изменений (основное изменение версии, обмен кодом с друзьями и т. д.). Что-то, что происходит, может быть, раз в месяц. Честно говоря, единственный способ, которым я когда-либо использовал git для своих личных проектов, — это если бы git автоматически делал фиксацию, отправлял эту фиксацию на сервер, а затем извлекал все изменения, которые были сделаны после каждого сохранения текста. файл.
Я имею в виду, что я использовал это - слияние, несколько ветвей, отмену коммитов и т. Д. Если бы мой работодатель заставил меня использовать это, я бы так и сделал. Но для моих личных проектов кодирования это просто дерьмо.
Если подумать, я мог бы просто написать плагин Eclipse, который делает именно это (автоматическая фиксация и синхронизация после каждого сохранения), лол. Но до тех пор этот ответ неприемлем.
«Я ненавижу git. Я ненавижу делать коммиты. Я ненавижу вводить свой пароль». Хотя я не могу спорить с первым (хотя я люблю git), я не понимаю последнего: у меня есть настройка задания Cron, которая автоматически заботится обо мне, и мне никогда не нужно вводить пароль (после первоначальной настройки это является). В вашем случае я бы даже подумал о том, чтобы сделать еще один шаг и проверить с помощью GitAnnex, чтобы вы могли определить, какие файлы должны быть куда и какие везде.
Я рассмотрю это. Я имею в виду, что частота, с которой его нужно запускать, довольно высока (я программирую на трех разных компьютерах в трех разных частях моего дома одновременно). Я имею в виду, что у меня будет компьютер, установленный на кухне, один в ванной и один в спальне, и каждый раз, когда я иду в ванную, я пишу несколько строк кода, а затем, когда я закончу, я пойду на кухню, поем чего-нибудь и напишу несколько строчек кода (продолжая с того места, на котором остановился, когда кодил в ванной), а потом пойду в спальню и буду там кодить, пока не понадобится чтобы снова воспользоваться ванной.
Но да — моя оптимальная среда кодирования синхронизируется в режиме реального времени на всех моих компьютерах. Иногда, когда меня нет дома (например, в школьной библиотеке), я подключаюсь по SSH к одному из своих серверов и вношу там изменение кода, а затем хочу, чтобы это изменение кода распространялось на мои ноутбуки, когда я возвращаюсь домой. Раньше я использовал свой домашний рабочий стол в качестве сервера, и все мои компьютеры синхронизировали папку кода Dropbox по локальной сети (с автоматическим полным ежедневным резервным копированием за последние 30 дней), но теперь мои серверы находятся за пределами моей локальной сети и Я не могу этого сделать (без того, чтобы заполнить сервер всякой ерундой Unity/KDE).
Существует по крайней мере один плагин eclipse для git и hg (есть для большинства IDE), нажатие на одну кнопку обычно выполняет фиксацию, обычно вы можете установить автоматическую отправку при фиксации, возможно, у вас может быть сообщение фиксации по умолчанию на каждом из ваших компьютеров (хотя я подозреваю, что вы не хотели бы, чтобы «Закодировано, имея S ...» в качестве сообщения для ванной комнаты. Когда вы доберетесь до другого компьютера, нажатие одной кнопки вызовет тягу, и вы можете установить автоматическое обновление по запросу. Вероятно, вы могли бы запрограммировать одну кнопку для «сохранить все, зафиксировать и нажать».