Я читаю слово

Rsync

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

Я работаю над сайтом в этой среде:

  • локальный сайт работает с xampp (отслеживается с помощью Git и удаленного репо для сотрудничества)
  • размещение сайта на сервере Apache (git недоступен)
  • живой сайт на том же сервере А. (без мерзавца)

Я просто выясняю мой рабочий процесс, который будет примерно таким:

  1. вытащить из удаленного репо
  2. вносить изменения локально
  3. загрузить на промежуточный сервер
  4. загрузить на живой сервер
  5. нажмите на удаленный репозиторий

Теперь проблема в том, что загрузка и выгрузка файлов занимает много времени, если я перенесу всю установку WordPress.

Является ли rsync правильным выбором, поскольку GIT недоступен? У меня есть доступ по SSH, но я действительно не знаю, что я делаю. Может кто-нибудь дать подсказки, как это настроить? Я установил PuTTY несколько дней назад, это может помочь?

1 ответ1

0

Rsync определенно решит вашу проблему. Если вы запустите rsync, используя -e "ssh <ssh params>" тогда он будет работать через соединение ssh, и, как это делает rsync, он (локально) генерирует список файлов и дельту для каждого из файлов в этот список, прежде чем сравнивать его с удаленно сгенерированным списком и отправлять файлы. Это означает, что даже при быстром соединении может начаться медленно, но как только это происходит, это быстро.

Я полагаю, что есть версия Windows rsync и ssh для Windows, в противном случае вы можете попробовать установить cygwin с помощью bash/rsync/ssh. Это не большая установка, если вы не хотите много. Хитрость с rsync заключается в получении правильных вариантов того, что вы хотите.

Таким образом , в вашем примере, у вас есть stagingserver.local и remoteserver.local Допустим, у вас есть доступ к удаленному серверу, как к пользователю releaseuser . Во-первых, убедитесь, что вы можете использовать ssh для releaseuser@remoteserver.local используя putty (я предлагаю вам настроить ~ releaseuser/.ssh/authorized_keys на remoteserver.local, чтобы вы могли войти в качестве releaseuser, используя публичную версию локального ключа ssh localkey.pub , вы можете установите это путем создания закрытого ключа в putty-keygen и сохранения открытых /открытых ключей openssh как localkey и localkey.pub , а затем загрузите открытый ключ в remoteserver.local).

Итак, rsync для локального каталога localdirectory в удаленный remotedirectory , используя приведенное выше:-

rsync -rave "ssh -i localkey" localdirectory/ releaseuser@remoteserver.local:/remotedirectory/

Завершающая косая черта в каждом из имен каталогов говорит ему скопировать содержимое localdirectory в каталог remotedirectory а не копировать сам каталог. Если вы пропустите завершающий слеш, вы получите remotedirectory/localdirectory созданный на удаленном сервере

Поэтому, чтобы немного пояснить варианты, которые я использовал, были -rave (которые мне всегда легко запомнить). -r означает рекурсивный, поэтому сходите в каталоги. -a означает архив, который аналогичен -rlptgoD , что означает в основном отправку всего (ссылок, разрешений, времени, групп, владельцев, устройств, но не жестких ссылок, acls или xattrs). -v означает многословный, поэтому выведите его на экран, а -e указывает команду rsh (в нашем случае ssh -i , которая сообщает ssh, какой файл ключа использовать).

надеюсь, это поможет

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .