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

  • Как мне преобразовать «последние измененные» даты в конкретном каталоге?
  • Как заставить get-iplayer получать контролируемое качество без огромного размера?
  • Переименовать файлы для вставки _ между словами StudlyCapsified
  • Создание контрольной суммы архива 7zip, созданного из создаваемого файла tar
  • Член группы не может писать даже с разрешением на запись
  • Отображение истории файла (список пользователей, которые изменили файл)
  • Удалить первый экземпляр строк с двойным значением поля
  • Список всех файлов, которые я создал в кластере Linux
  • 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 . Изменение владельца не может быть выполнено без суперпользователя.

    Interesting Posts

    Как «отслеживать» вновь созданные процессы?

    Два приложения должны привязываться к одному и тому же порту

    Объединение файлов в каталог по заголовкам и исключение общего содержимого

    Динамически переформатированные страницы пользователя при изменении размеров терминала

    Как получить программу с привилегиями root без использования su или sudo

    path_helper и zsh

    Переместить компилятор в другую систему

    Запуск аппаратных прерываний путем подключения параллельных портов 9 и 10 не работает

    Как Bash обрабатывает командную строку?

    realmd – Разрешить группу AD

    Заменить символ алфавитом в зависимости от позиции в строке

    Может ли подключение к SSH-туннелю привести к уязвимости?

    Тестирование интенсивности процессора одной команды или функции

    Измерение скорости передачи USB-накопителя

    Как написать / sys / со сценарием после перезагрузки? (Sudo)

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