Линукс, Vim, LaTeX, полезные скрипты, визуализация данных, численные расчёты, немного ФП

20071123

Синхронизация каталогов по SSH  

Бывает полезно синхронизовать (зеркалировать) каталоги на локальной и удалённой машинах. Например, изменившийся сайт на хостинг выложить или копию чего-то изменяющегося себе скачать...

Пусть есть два каталога: на локальной машине и на удалённой. Предполагаем, что изменения происходит только в одном месте (для объединения параллельных изменений нужно использовать средства управления версиями вроде subversion, а не средства синхронизации). Нужно перенести все произошедшие изменения в другой из них. Это и есть задача синхронизации.

Обычно синхронизация двух каталогов делается с помощью Rsync и SSH.

Пусть изменяется удалённый каталог, копируем его на локальную машину так:
$ rsync -avz --delete -e ssh логин@удалённый.хост:путь/откуда/ путь/куда

Если же «отражаем» локальный каталог на удалённую машину (выкладываем изменённый сайт на хостинг), то
$ rsync -avz --delete -e ssh путь/откуда/ логин@удалённый.хост:путь/куда

Полезно поиграться с командой добавляя и убирая слэш («/») после названия исходного каталога, чтобы понять, что он делает (или почитать man rsync). Потренироваться, кстати, можно и с двумя локальными каталогами.

Если удалять файлы, исчезнувшие в исходном каталоге, но присутствующие в целевом, не нужно — ключ --delete убрать.

Смотрите также:

Резервное копирование и шифрование архивов с помощью cpio (или tar) и gpg

6 коммент.:

  1. Давно хочу попробовать rsync, но всё руки не доходят. А с такой подробной докой точно дойдут теперь :-)

    Сам пользуюсь unison, но иногда он принимает не вполне адекватные решения при синхронизации двух каталогов. Или я что-то намудрил в параметрах...

    В общем, rsync попробую, за статью спасибо.
    ОтветитьУдалить
  2. пасибо! перехожу с винды на линух, пока еще не особо шарю..
    ОтветитьУдалить
  3. Спасибо! Хорошая статья!
    ОтветитьУдалить
  4. Спасибо, пригодилась синхронизация по фтп
    ОтветитьУдалить
  5. Воспользовался фтп-синхронизацией - с сервера на локальную машину. Столкнулся с такой проблемой. В каталоге было оооочень много файлов - картинки к товарам. Все графические ФТП-клиенти видели только, по-моему, 32 тысячи. Далее - нет.
    Описанный здесь способ поступил точно так же. Удалил нафиг с локалки всё, что не влезло видимо в эти 32 тысячи.
    rsync нет на сервере.
    Пока единственный способ - это через PHP-shell делать архив каталога с этими фото. Тогда ничего не теряется.
    ОтветитьУдалить
  6. Так много файлов на каталог может быть чревато и другими проблемами... Я бы сделал что-нибудь вроде [первая буква]/[полное имя]. Об ошибках фтп-клиентов надо сообщать их разработчикам.
    ОтветитьУдалить

Следующее Предыдущее Главная страница