Как скопировать структуру каталогов с одного сервера на другой без пользователя 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

  • Путь к файлу в журнале аудита вместо номера inode
  • Как безопасно экспортировать устройство (HDD)?
  • Как заставить get-iplayer получать контролируемое качество без огромного размера?
  • предотвратить изменение файла и / или метки времени файла
  • Получить все имена файлов в каталоге, созданном до даты ввода
  • Что означает - означает объединение с файлами и каталогами Linux
  • Что такое консультативная блокировка файлов, которые обычно используют системы Unix?
  • Можно ли находить файлы, созданные между двумя конкретными временами, игнорируя даты?
  • 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 - лучшая ОС в мире.