Назад | Перейти на главную страницу

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

Ситуация следующая:

Обычно я бы просто выполнял rsync, напрямую между A и B, но из-за сильно ограниченной пропускной способности на данный момент мне нужно что-то другое, так как время ожидания rsync истекает после создания списка из 430 файлов (49 МБ несжатых ... может быть сжат до ~ 7Мб).

Что я пробовал до сих пор: rsync все от A до C, tar его, копирует tarball, а затем распаковывает его, однако это нарушает права собственности и / или разрешения.

Чтобы выполнить синхронизацию от A до C, я запускаю эту команду:

rsync --numeric-ids --password-file=/root/rsync_pwd_file -oaPvu rsync://exsync@example.com/portal_2/ ./portal_2/

... и, судя по всему, они действительно попадают на C с правильными правами собственности / разрешениями / флагами / всем (хотя не уверен на 100% ... есть ли еще переключатели, которые я могу добавить туда? Я что-то пропустил ?)

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

В чем я не уверен, так это во флагах и переключателях для создания и извлечения архива, поэтому не мог бы кто-нибудь предоставить полные команды для создания архива из / root / portal_2 на машине C (со всем неповрежденным) и извлечения архива в / var / ex / portal_2 на машине B? ?

Кроме того, стоит ли упомянуть какие-либо другие подходы, которые позволили бы мне это сделать? У меня есть root-доступ к A и C, тогда как у меня есть доступ rsync только к B.

PS: Я запускаю rsync v2.6.9 на машине B, и, к сожалению, у меня нет возможности перейти на v3

Я не совсем уверен, правильно ли я прочитал ваш вопрос. Может ли А поговорить с Б напрямую? Если да, просто используйте rsync -e 'ssh -oServerAliveInterval=30' чтобы избежать тайм-аута rsync / ssh.

Если A не может напрямую поговорить с B, я бы попробовал следующее:

  • Из C ssh в A с обратным портом вперед на B (ssh -R2222:B:22 A)
  • На Rsync to localhost: 2222, также известный как переадресация порта
  • Использовать rsync -e 'ssh -oServerAliveInterval=30' чтобы избежать тайм-аута rsync / ssh.

Таким образом, вы обойдете проблему пользователей и обойдете время ожидания.

Итак, чтобы ответить на вопрос tar:

cd /root; tar -jcv --numeric-owner -f portal_2.tar.bz2 portal_2

И

cd /var/ex; tar xf portal_2.tar.bz2