В последней версии Linux printf foo> / proc / $$ / comm
изменит имя исполняемого файла ( ps - p
) при условии, что "noclobber" не установлен (и ветер в правильном направлении).
В zsh printf foo>! / proc / $$ / comm
работает независимо от состояния затирания.
Предполагая, что каждая резервная копия представляет собой один файл (путем архивирования обоих файлов, указанных выше ), SCP будет более эффективным, чем rsync , поскольку выполняет меньшую общую работу. кроме передачи файла.
Что касается автоматизации, вам нужно настроить так, чтобы либо:
Предпочтительным методом для любого из них обычно являются незашифрованные ключи 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
не позволяет ему запрашивать что-либо.
На этом этапе создайте отдельных пользователей для каждого клиентского VPS. Не обязательно, но в случае взлома одного VPS вы не хотите, чтобы он мог читать (или записывать )резервные копии с других машин.
Допустим, у вас есть аккаунты vps1vps2 , на резервном -сервере VPS.
Настройте каждый VPS для доступа к резервному -серверу VPS через ssh с использованием сертификатов, а не паролей:
ssh-keygen
на каждом VPS. ~/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
, если хотите. (Я не знаю, зачем вам это нужно, но они оба будут работать ).