1

Я был бы очень полезен, если бы мог сделать что-то вроде этого:

  1. иди в местный реж
  2. SSH к удаленному хосту
  3. Локальный каталог синхронизируется с удаленным хостом (локальный -> удаленный)
  4. запустить команду удаленно
  5. снова синхронизировать с результатами (удаленно -> локально)

Есть ли способ сделать это стандартными инструментами, такими как ssh или приложением, которое это делает?

3 ответа3

2

Вы можете использовать rsync --rsh=ssh для шагов 2+3, ssh для шага 4 и снова rsync для шага 2+5.

Вначале параметры для rsync могут показаться немного сложными, но сначала вы всегда можете проверить с помощью --dry-run .

2

Вы можете посмотреть на sshfs - монтирование каталога через SSH вместо передачи файлов туда-сюда.

В этом случае вы должны подключиться к серверу и смонтировать каталог вашего ПК. Затем вы можете работать непосредственно с файлами, прежде чем размонтировать и отключить их.

В зависимости от сети вам может потребоваться переслать порт прослушивания вашего локального SSH-сервера.

Это FUSE, поэтому нет необходимости в root / sudo.


Смонтировать с:

sshfs user@host:/home/myuser/mydir ./mydir

Размонтировать с помощью:

fusermount -u ./mydir
0

Что касается синхронизирующих частей вашего списка - поскольку вы хотите передавать двунаправленно - вы также можете взглянуть на унисон, который похож, но отличается от rsync. Вы можете запустить его до и после вашей команды, и он будет синхронизировать обе стороны.

Аналогичен rsync:

  • транспорт через SSH (а также местный и другие)
  • Дифференциальный перенос под капотом, если части файлов одинаковы, их не нужно передавать полностью, но передаются только измененные (или разные) части и восстанавливается весь файл с другой стороны, что очень полезно для уменьшения использование полосы пропускания

Отличается от rsync:

  • нужен unsion на обоих концах - и он очень требователен к номеру версии unison
  • Двунаправленная синхронизация: синхронизирует файлы, измененные с момента последней синхронизации на одном конце, с другого - и определяет, были ли оба изменения изменены, или либо игнорирует их, либо позволяет выбрать
  • текстовый и графический интерфейс для интерактивного использования, а также неинтерактивный режим

Если вы хотите сделать направление копирования явным, я бы также предложил rsync, как это сделал jvb в https://superuser.com/a/1219619/738892 - также начиная с --dry-run (или -n для краткости) очень полезно. Также важен комментарий Atties по поводу косых черт : начните с -av для копирования каталога (с выводами - чтобы увидеть, что происходит).

Вы можете или не можете использовать --del и друзей, в зависимости от того, хотите ли вы удалить файлы, которые исчезли из SRC в DEST. В зависимости от вашего случая использования --update (файлы пропускаются, которые новее на DEST), может быть полезным для вас.

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