Копирование большого дерева с одной машины на другую, сохранение права собственности

Я пытаюсь скопировать большую структуру папок между машинами. Я хочу сохранить права собственности / права во время копирования, так как неразумно «исправлять» привилегированных лиц впоследствии.

Поэтому я использую следующую команду для tar файла с неприкосновенными личными данными и передачи данных на машину назначения. Те же пользователи существуют на обеих машинах.

tar cfzp - foldertocopy | ssh me@machine "cat > /applications/incoming/foldertocopy.tar.gz" 

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

Проблема в том, что на диске недостаточно места для хранения сжатых и несжатых данных одновременно .

Я мог бы использовать rsync / recursive scp, но у моего пользователя нет прав на создание файлов с правильными привилегиями, и root не может войти в систему удаленно.

Какие у меня варианты? Исходным устройством является RHEL4, а местом назначения является RHEL5.

  • Имя папки изменилось, когда SCP с iPhone на сервер Synology
  • Приветственный баннер, останавливающий scp
  • scp, блокирующий мой сервер (в обоих направлениях)
  • Параметры MaxStartups и MaxSessions для ssh-соединений?
  • scp to / home изменяет разрешения?
  • Как включить локальную ~ автозаполнение для scp?
  • Сценарий Bash для scp-интерпретации тильды (~) слишком рано
  • Список исключений из командной строки mv
  • 3 Solutions collect form web for “Копирование большого дерева с одной машины на другую, сохранение права собственности”

    Как root, настройте именованный канал:

     # mkfifo /tmp/fifo # chmod o+w /tmp/fifo 

    Затем передайте свои данные me :

     $ tar cfzp - foldertocopy | ssh me@machine "cat > /tmp/fifo" 

    Но прочитайте его как root :

     # tar -xfzp /tmp/fifo 

    Одним из решений проблемы является то, что ssh запускает разворот напрямую:

     tar cfzp - foldertocopy | ssh me@machine "cd rightplace; tar xzf -" 

    Почему вы не используете архив rsync?

     rsync -avzHAX foldertocopy user@remoteserver:/file/path/to/copy 

    Таким образом, вы можете сохранить каждую деталь в файле, а также с помощью «z» rsync сжимает поток «на лету».

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