В дополнение ко всем предыдущим ответам, вот тот, который полагается на ключи SSH с ограничениями на то, что может быть сделано при входе в систему с этим ключом.
На сервере А
В этом случае менее важно, если вы создаете отдельного пользователя или используете одно из существующих имен пользователей, хотя на моем месте я бы создал отдельного пользователя. Я буду использовать имя пользователя bkpuser
для обоих серверов в моих примерах ниже.
После входа в систему bkpuser
создайте ключ SSH без пароля.
На сервере Б
Включить PubkeyAuthentication
в sshd_config
.
Создайте пользователя bkpuser
. Установите очень сложный пароль или отключите вход с паролем для этого пользователя (как именно вы это сделаете, будет зависеть от того, какой Unix и дистрибутив вы используете) Дело в том, что пользователь должен войти в систему только с ключом SSH. Убедитесь, что у вас bkpuser
есть доступ на чтение ко всем каталогам и файлам, которые вы хотите сохранить.
Скопируйте открытую часть ключа, созданного на A, ~bkpuser/.ssh/authorized_keys
на B. Отредактируйте, чтобы автоматически запускать команду для соединения. Эта команда не должна быть указателем на скрипт оболочки; вместо этого вставьте скрипт оболочки непосредственно в ключ. Также включите ограничение, чтобы ключ можно было использовать только с сервера А, а не с другого сервера. В приведенном ниже примере я даю серверу A IP-адрес 10.1.2.3
и предполагаю, что все файлы, для которых я хочу выполнить резервное копирование, находятся под /data
.
from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="cd /data;/usr/bin/tar -cf - *; /usr/bin/logger -t BACKUP -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";" ssh-dss AA.....
На сервере А
Если вы используете одну из вкладок cron, которая поддерживает @reboot
записи, добавьте такую запись в bkpuser
s crontab с помощью команды ssh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
. Если это не разрешено, установите его в любое удобное время - если бы это были мои данные, я бы, наверное, делал это ежедневно.