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

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

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

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

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

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

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

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

  • * .desktop или symlink работает (только для этого одного файла) - Linux Mint 17.2 Cinnamon
  • Жесткие ссылки по сравнению с символическими ссылками: какой из них быстрее / меньше?
  • Сделать команду firefox запущенной скачанной firefox вместо iceweasel
  • Создавать символические ссылки на внешнем устройстве хранения данных, которое может работать на любых Linux-машинах?
  • «Связанные» символические ссылки
  • Совместное использование дерева проектов между средами
  • Как скопировать символические ссылки как символические ссылки с одной машины на другую?
  • Как скопировать символическую ссылку?
  • 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 - лучшая ОС в мире.