Чтобы делать это ежедневно в большинстве дистрибутивов Linux, вы должны просто поместить rsync
команду (согласно ответу @ guido ) в скрипт и поместить скрипт в /etc/cron.daily
каталог. Пока anacron
он установлен (может не быть по умолчанию), все пропущенные cron.daily
задания будут обнаружены при следующей загрузке машины (а также при запуске в полночь, если машина переключена).
Для сценария вы просто сделаете:
#!/bin/sh
rsync -a user@serverB:/source/folder/ /destination_folder
Вы можете добавить -z
опцию (сжатие), если резервное копирование выполняется по медленному (ish) соединению или если вы хотите сэкономить пропускную способность, но по моему опыту это на самом деле снизит производительность на современных машинах / сетях.
Если вы хотите вести журнал каждой резервной копии, вы можете сделать что-то вроде:
#!/bin/sh
rsync -av user@serverB:/source/folder/ /destination_folder \
>/var/log/backup_log 2>&1
Обратите внимание, что для того, чтобы это работало как задание cron, у вас должен быть установлен ssh без пароля для root на сервере A для входа на сервер B. Это должна быть учетная запись root (т. Е. Ключи /root/.ssh
), так как cron.daily
задания запускаются от имени root.
anacron
не будет забирать наcron
работу пользователя . Хотя вы всегда можете использоватьsu
/sudo
из скрипта для запуска rsync от имени конкретного пользователя. Но учтите, что ключи будут надежнее удерживаться/root
.user
может быть обычным пользователем на machineB, в зависимости от того, что вы копируете .ls -l
к вашему вопросу вы добавите образец ошибок, которые вы получаете, и вывод некоторых файлов, то люди могут дать дальнейшие советы.Я бы предложил использовать rdiff-backup . Я использую его сейчас для автоматического создания инкрементных резервных копий каждую ночь для моих собственных данных (две рабочие станции, два сервера и одна учетная запись на чужом сервере).
Ранее я использовал для этого rsync, но переключился на rdiff-backup, так как это более удобно и может создавать инкрементные резервные копии больших файлов, таких как образы дисков виртуальных машин. rdiff-backup во многом похож на мои предыдущие скрипты rsync, но все сделано правильно .
Я поместил файл сценария в /etc/cron.daily на компьютер, на котором хранится резервная копия, который запускает rdiff-backup один раз в день рано утром и получает данные с удаленного компьютера.
источник
В дополнение ко всем предыдущим ответам, вот тот, который полагается на ключи SSH с ограничениями на то, что может быть сделано при входе в систему с этим ключом.
На сервере А
В этом случае менее важно, если вы создаете отдельного пользователя или используете одно из существующих имен пользователей, хотя на моем месте я бы создал отдельного пользователя. Я буду использовать имя пользователя
bkpuser
для обоих серверов в моих примерах ниже.После входа в систему
bkpuser
создайте ключ SSH без пароля.На сервере Б
Включить
PubkeyAuthentication
вsshd_config
.Создайте пользователя
bkpuser
. Установите очень сложный пароль или отключите вход с паролем для этого пользователя (как именно вы это сделаете, будет зависеть от того, какой Unix и дистрибутив вы используете) Дело в том, что пользователь должен войти в систему только с ключом SSH. Убедитесь, что у васbkpuser
есть доступ на чтение ко всем каталогам и файлам, которые вы хотите сохранить.Скопируйте открытую часть ключа, созданного на A,
~bkpuser/.ssh/authorized_keys
на B. Отредактируйте, чтобы автоматически запускать команду для соединения. Эта команда не должна быть указателем на скрипт оболочки; вместо этого вставьте скрипт оболочки непосредственно в ключ. Также включите ограничение, чтобы ключ можно было использовать только с сервера А, а не с другого сервера. В приведенном ниже примере я даю серверу A IP-адрес10.1.2.3
и предполагаю, что все файлы, для которых я хочу выполнить резервное копирование, находятся под/data
.На сервере А
Если вы используете одну из вкладок cron, которая поддерживает
@reboot
записи, добавьте такую запись вbkpuser
s crontab с помощью командыssh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
. Если это не разрешено, установите его в любое удобное время - если бы это были мои данные, я бы, наверное, делал это ежедневно.источник
Вот полное решение для резервного копирования сервера B на сервер A каждый день в 4 часа утра по SSH.
Создайте автоматическое соединение SSH с сервера B на сервер A
Создайте скрипт резервного копирования на сервере B
nano / root / backup
chmod 744 / root / backup
Автоматизировать резервное копирование на сервере B
crontab -e
Для получения дополнительной информации см. Стр. Подключение к SSH без ввода пароля в Linux и резервное копирование сервера в Debian или Ubuntu Linux .
источник
Для этого вы можете использовать rsync (в обратном порядке):
где:
источник
-a
подразумевает-r
.Суть вопроса в том, как сделать это автоматически (не нужно вводить пароли):
screen
илиtmux
сеансeval $(ssh-agent)
ssh-add
export RSYNC_RSH="ssh -i ~/.ssh/id_rsa ..."
while :; do rsync -av u@h:/p /local; sleep $[24*60*60]; done
источник
ssh
.RSYNC_SSH
к поиску стандартные местоположения ключей SSH....
точками, в которые можно добавлять полезные аргументы. Вы также не читали мой последний комментарий, где я упоминаю «действительно важный вопрос», поэтому я никогда не делал бы это с ключами без пароля. Вы также должны будете включить,PubkeyAuthentication
и никто не сказал это.