Как скопировать структуру каталогов с одного сервера на другой без пользователя root?

Я хотел бы узнать лучший способ скопировать структуру каталогов с одного сервера (Unix) на другой (Linux):

  • без пользователя root
  • серверы не подключены (например, нельзя использовать SSH непосредственно между ними)
  • Мне нужно скопировать только папки и подпапки, без файлов
  • Разрешения на папки также должны быть переданы

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

Изменить: я забыл упомянуть, что server1 является Unix, а сервер 2 – Linux. Поэтому, когда я пытаюсь выполнить код proycon на сервере Unix, я получил сообщение: tar: не распознанный флаг: z Когда я попробую вариант Tom Hunt, я получил сообщение: -printf не является допустимым вариантом. Кроме того, стоит упомянуть, что у пользователей разные имена, хотя они имеют одинаковые права и находятся в одной группе. Поэтому у меня есть user_xy @ server1 и user_zx @ server2

  • Как проверить, читается ли группа файлов?
  • Файл загадочно пуст. Варианты восстановления?
  • найти все конечные подкаталоги в дереве
  • Как мне преобразовать «последние измененные» даты в конкретном каталоге?
  • Проблема сортировки нескольких столбцов Unix
  • синхронизировать конкретный файл рекурсивно, но только в подкаталогах, присутствующих в пункте назначения
  • Липкий бит и пользователи с разрешением sudo
  • Как читать строки из переменной | удар
  • 2 Solutions collect form web for “Как скопировать структуру каталогов с одного сервера на другой без пользователя root?”

    В идеале вы бы сделали что-то вроде rsync или scp , но тогда машины действительно должны были быть связаны. Я бы пошел использовать tar с find вместо этого, если у вас нет средств прямой передачи, он может сохранять пользователей, разрешения и символические ссылки.

    На одном хосте:

     $ find yourdirectory/ -type d | tar -cvzf archive.tar.gz --no-recursion --files-from - 

    Перенесите архив любыми способами (ftp? USB-накопитель? Дымовые сигналы?)

    На целевом хосте:

     $ tar -xvzf archive.tar.gz 

    На server1 :

     find . -type d -printf '%p\n%m\n' >dir_list 

    Перенесите файл dir_list с сервера1 на server2, как вы считаете нужным.

    На server2 :

     while read -r filename; do read -r perms mkdir -p "$filename" chmod "$perms" "$filename" done <dir_list 

    Это создаст все каталоги, принадлежащие пользователю, который вы запускаете, как на server2 . Изменение владельца не может быть выполнено без суперпользователя.

    Linux и Unix - лучшая ОС в мире.