Архивирование домашней папки пользователя на удаленный сервер без каких-либо символических ссылок?

Нам нужно сделать однократное копирование архивных копий домашних папок пользователей на сервер архива (до окончательного удаления), когда они уйдут, если позже они обнаружат, что им могут потребоваться некоторые из их файлов (хотя мы, конечно, очень сильно побуждайте их брать за собой все необходимое, прежде чем они захотят).

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

  • Symlink всех каталогов внутри одного каталога в другой каталог
  • readlink -f не работает с несколькими файлами
  • Можно ли загрузить файл ссылки из веб-каталога?
  • Что-то вроде символически связанного файла, но с привязанными данными изменения?
  • Заменяет ли загрузчик Linux (ld.so) символические ссылки?
  • Почему «ls -L» печатает имя самой ссылки, а не имя файла, на который указывает ссылка?
  • К сожалению, оказывается, что scp, похоже, всегда следит за символическими ссылками и, похоже, не имеет возможности предотвратить это.

    Я ищу альтернативный способ резервного копирования папки пользователя, которая позволяет избежать этой проблемы (и в идеале не сложнее, чем это абсолютно необходимо).

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

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

    Может ли кто-нибудь предложить надежную и простую альтернативу scp для этого?

  • Удалить софт-ссылку, но не целевую
  • Найти все файлы / файлы, на которых есть ссылки на них?
  • Файловая система Docker - совместимость с символическими ссылками
  • Symlink с символом @?
  • Как скопировать структуру папок и сделать символические ссылки на файлы?
  • Перемещение 4 системных папок в 1 разделенный раздел
  • 2 Solutions collect form web for “Архивирование домашней папки пользователя на удаленный сервер без каких-либо символических ссылок?”

    Если вам нравится tar за исключением временного файла, это легко: не используйте временный файл. Используйте трубу.

     cd /home ; tar cf - user | gzip | ssh archivehost -l archiveuser 'cat > user.archived.tar.gz' 

    Замените xz или все, что вы предпочитаете для gzip . Или переместите его на другую сторону соединения, если сохранение циклов ЦП на главном сервере более важно, чем сохранение пропускной способности сети (и центрального процессора на сервере архива)

     cd /home ; tar cf - user | ssh archivehost -l archiveuser 'gzip > user.archived.tar.gz' 

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

    Более подробная информация по запросу:

    Я хочу, чтобы user был пользователем, чей домашний каталог /home/user вы архивируете. archivehost – это сервер, на котором вы собираетесь хранить архивы, а archiveuser – это учетная запись на сервере архива, которая будет владеть архивами.

    tar cf - user означает «создать tar-архив user и записать его в stdout». -c – «create», а -f - «использовать stdin / stdout в качестве файла». Вероятно, он будет работать только tar c user поскольку -f - вероятно, будет по умолчанию, но первоначально по умолчанию действие tar состояло в том, чтобы читать или записывать ленточное устройство. Использование явного -f - может быть просто признаком того, что я стар.

    Флаг tar z был бы прекрасен, за исключением того, что я не мог показать, как переместить его на другую сторону ssh . (Кроме того, соединение gzip и tar с явным каналом является одной из тех вещей «старых людей» – у tar не всегда была xz -3v опция.) Плюс я могу заменить bzip2 , lzop , xz -3v или любую другую программу сжатия без необходимости для запоминания соответствующих параметров tar .

    Я никогда не слышал о --checkpoint раньше, так что вам просто придется полагаться на свои собственные тесты для этого.

    Rsync – разумный выбор. Нет ничего плохого в использовании rsync для одноразовой передачи.

    Тар также является разумным выбором. Вам не нужно хранить архив локально, вы можете напрямую подключить его к SSH .

    Другая возможность – установить серверный каталог через SSHFS . Однако будьте осторожны, что SSHFS не сохранит все метаданные, такие как разрешения. (Tar и rsync могут не сохранять все метаданные, но они могут сделать лучшую работу – pass --acls --xattrs – GNU tar, pass --acls --xattrs – rsync.)

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