Использование rsync для резервного копирования 4 разных VPS на пятый VPS, который используется для хранения резервных копий

В последней версии Linux printf foo> / proc / $$ / comm изменит имя исполняемого файла ( ps - p ) при условии, что "noclobber" не установлен (и ветер в правильном направлении).

В zsh printf foo>! / proc / $$ / comm работает независимо от состояния затирания.

0
20.07.2017, 20:54
2 ответа

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

Что касается автоматизации, вам нужно настроить так, чтобы либо:

  1. Пятый VPS может подключаться к четырём другим без пароля, так как пользователь, который может читать резервные копии (, немного проще в управлении, но сложнее кодировать ).
  2. Четыре других VPS могут подключаться к пятому без пароля, предпочтительно каждый с отдельной учетной записью (немного сложнее в управлении, но легче кодировать ).

Предпочтительным методом для любого из них обычно являются незашифрованные ключи SSH. После этого вы можете настроить задание cron (на пятом VPS в случае 1 или на каждом из 4 других в случае 2 ), которое будет передавать последнюю резервную копию в нужное место.

Вот быстрый и грязный сценарий оболочки для второго варианта, который скопирует самый последний файл из каталога в удаленную систему:

#!/bin/bash
file=`ls -t "${1}" | head -n 1`
scp -pCB "${1}"/"${file}" ${2}

Запуск с указанием пути к каталогу, в котором хранятся резервные копии, в качестве первого аргумента и строки user@host:/path, указывающей на местоположение на пятом VPS, в качестве второго аргумента скопирует самую последнюю резервную копию из локальной системы в пятый VPS.

Параметр -pдля SCP сохраняет mtime (, так что вы по-прежнему можете использовать ту же команду findдля прореживания старых резервных копий ), -Cвключает сжатие (это может улучшиться, а может и нет производительность, и -Bне позволяет ему запрашивать что-либо.

2
28.04.2021, 23:58

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

Допустим, у вас есть аккаунты vps1vps2 , на резервном -сервере VPS.

  • Настройте каждый VPS для доступа к резервному -серверу VPS через ssh с использованием сертификатов, а не паролей:

    1. Создайте пользователя (, скажем, «резервное копирование»)(не обязательно ).
    2. Создайте набор ключей ssh ​​-для «резервного копирования» пользователя с ssh-keygenна каждом VPS.
    3. добавить содержимое ~/backup/.ssh/id_rsa.pubк ~/<vps-user>/.ssh/authorized_keysдля каждой учетной записи VPS. Убедитесь, что он доступен для чтения только этому пользователю(chmod 600 ~<vps-user>/.ssh/authorized_keys)

С каждого VPS теперь вы сможете подключиться по ssh от «резервной» учетной записи к резервной -учетной записи vps сервера...

  • На сервере VPS -создайте каталог для каждой клиентской машины для записи своих резервных копий и сделайте его rw только для учетной записи VPS этого клиента, например:
    mkdir /var/spool/big-backups/vps1; chown vps1 /var/spool/big-backups/vps1; chmod 600 /var/spool/big-backups/vps1;

  • Создайте задание cron для резервного копирования пользователя на каждом vps:rsync -avz /root/backups/db/ -e "ssh -l vps1" /root/backups/ /var/spool/big-backups/vps1/".Запланируйте это после локальных заданий резервного копирования на клиентских машинах VPS, очевидно. (Флаг zв rsync нежелателен, если ваши файлы уже сжаты, резервной копии БД нет в вашем примере...)

Вы можете использовать scpвместо rsync, если хотите. (Я не знаю, зачем вам это нужно, но они оба будут работать ).

0
28.04.2021, 23:58

Теги

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