Назад | Перейти на главную страницу

Резервное копирование всего сервера по сети с помощью tar

У меня есть сервер с общим размером 80 ГБ, на котором больше нет места, поэтому я не могу выполнять резервное копирование на сервере. Я нашел эту команду

ssh server2 "tar -zc -C /srcdir ./path" | tar -zx -C /destination

но это не имеет смысла. ./path относится к чему? Итак, я думал об этом:

localserver:~$ ssh root@remoteserver "tar czvf / " | tar xzvf /mnt/backup

Сжать корень удаленного сервера и распаковать в моем резервном каталоге. /mnt/backup установлен на приводе 300G. Это сработает? У меня есть беспарольный доступ к удаленному серверу с использованием открытого ключа.

Это хорошее начало, но есть некоторые проблемы

Во-первых, на исходном сервере вам нужно указать, что вы хотите отправить архив на стандартный вывод. Это делается путем предоставления - как имя файла:

tar czf - /

Вам нужно удалить -v параметр. Распечатка имен файлов вместе со сжатым архивом полностью его испортит.

На целевой стороне вам нужно указать выходной каталог с помощью -C (или вставьте в него компакт-диск перед тем, как начать, тогда можете не указывать):

tar xz -C /mnt/backup

Вы можете оставить -v вот если хотите ... это замедлит процесс, но не принесет никакого вреда. Нет необходимости указывать -f, поскольку tar автоматически обнаруживает сжатый поток из stdin.

Полная рабочая команда будет такой:

ssh root@removeserver "tar cfz - /" |tar xz -C /mnt/backup

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