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

Вы можете сделать что-нибудь вроде

failed=false
for task in "${tasks[@]}"; do
  if ! process "$task"; then
      failed=true
      break
  fi
  commit "$task"
done

if "$failed"; then
   echo "Failed something" >&2
fi
1
23.06.2017, 11:57
2 ответа

Если вам нравится 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-архив пользователя и записать его в стандартный вывод». -cозначает «создать», а -f -— «использовать стандартный ввод/стандартный вывод в качестве файла». Это, вероятно, будет работать только с tar c пользователем, так как -f -, вероятно, будет значением по умолчанию, но первоначально действие по умолчанию tarзаключалось в чтении или записи ленточное устройство. Использование явного -f -может быть просто признаком того, что я стар.

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

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

2
27.01.2020, 23:24

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

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

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

1
27.01.2020, 23:24

Теги

Похожие вопросы