Как вы будете делать резервное копирование удаленного Vbu Ubuntu через SSH?
===========================================================================

 Итак, как я уже сказал, у меня есть VPS, Raspberry Pi и план, но мне нужен какой-то совет, так что дальше. 

  У меня есть VPS с prgmr.com, с которым я работаю хорошо и без проблем. У меня также есть новый RaspberryPi, сидящий на моем столе, с загрузкой Raspberrian, когда я печатаю. Я планирую использовать Raspberry Pi в качестве резервного сервера у себя дома, поэтому у меня такой вопрос: 

   **Как вы будете выполнять резервное копирование удаленного Vbu Ubuntu через SSH?**  

  VPS настроен как веб-сервер, но я хотел бы настроить задание cron на Pi, чтобы он мог автоматически входить в VPS и запускать, а затем загружать резервную копию, только в случае, если мне удастся сделать это или что-то еще происходит, что приводит к потере данных. Естественно, я хочу, чтобы эта резервная копия содержала все, чтобы я мог быстро восстановить весь сервер, все прекрасно настроено, как сейчас, если что-то пойдет не так. 

  Как бы вы запустили резервное копирование такого рода? Я подумал, что мне придется написать какой-нибудь bash-скрипт для SSH, сжать все соответствующие файлы в tar.gz или аналогичный и загрузить изображения с помощью SCP. 

  Что вы думаете об этом? Какие пакеты и т. Д. Вы бы использовали, и как бы вы это настроили? На VPS есть стек LAMP, так какие файлы вы бы хотели скопировать? Он также имеет множество других небольших программ, таких как GIT и ZendTools. 

 

 SSH-аутентификация с открытым ключом
-------------------------------------

  Первое, что вы хотите сделать, это начать с аутентификации с помощью открытого ключа SSH. Это позволит вашему сценарию использовать SSH без пароля. 

  Все, что нужно серверу, это установить SSH и установить аутентификацию с открытым ключом для пользователя, который будет запускать скрипт резервного копирования из RasPi. 

  Вот хороший учебник для аутентификации с открытым ключом: <https://hkn.eecs.berkeley.edu/~dhsu/ssh_public_key_howto.html> 

  Вариант 1: SSH и Tar [117 ]  Вы можете сжать tar.gz с сервера и передать его напрямую через ssh с помощью чего-то вроде этого:  
```
ssh root@remoteserver.example.com "tar -czvf - / 2> /var/log/sshbackup" > vpsbackup.tar.gz

```
  Это сделает tar VPS и gzip всеми файлами на / и передаст его через SSH хранить в vpsbackup.tar.gz на RasPi. Журнал самой последней резервной копии будет храниться в / var / log / sshbackup на VPS.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 Вариант 2: Rsync
-----------------

  Отправка всего .tar.gz по SSH неэффективна ... Файлы, которые не изменяются, все равно будут передаваться. Лучшее решение - использовать rsync, но это затрудняет создание .tar.gz, который сохраняет разрешения. Если у вас достаточно места на RasPi, вы можете просто сохранить файлы резервных копий в виде простых старых файлов. Затем вы можете создать скрипт tar.gz, если хотите сохранить несколько прошлых резервных копий. 

  Серверу нужен установленный rsync. Это будет работать через SSH, поэтому вы все еще используете аутентификацию с открытым ключом и сохраняете шифрование. Вам нужно будет запустить эту команду  *от имени пользователя root*  и включить аутентификацию с открытым ключом и входы SSH для root, чтобы сохранить разрешения. Ваш пункт назначения (или, по крайней мере, временный пункт назначения) должен быть файловой системой Linux. Если вы храните эти резервные копии в разделе FAT или NTFS (например, на большинстве внешних жестких дисков), вы можете создать петлевую файловую систему (см.  [http://www.walkernews.net/2007/07/01/create). -linux-loopback-file-system-on-disk-file /](http://www.walkernews.net/2007/07/01/create-linux-loopback-file-system-on-disk-file/) ) для временного хранения. Файл tar.gz может храниться в любом разделе, поскольку он сохраняет разрешения самостоятельно. 

  Пример команды rsync: 

 
```
rsync -a --delete --exclude=/dev --exclude=/sys --exclude=/proc --exclude=/tmp remoteserver.example.com:/ /path/to/backup/destination/

```
   ***будьте осторожны при использовании --delete, особенно как root!***  Он удалит все файлы в каталоге назначения которые не существуют в резервном источнике.  **Вы должны использовать --delete только при синхронизации с выделенным резервным каталогом, который используется только для этого VPS.**  Вы также должны убедиться, что нет возможности синхронизации вашего скрипта с неправильным местом назначения (например, если / path / to / backup / destination определяется переменной оболочки) 

  rsync будет передавать только файлы, которые отличаются между источник и пункт назначения. Если у вас есть большие файлы, он также будет передавать только те части файла, которые изменились (чтобы это работало, вы должны добавить флаг -c). Это означает, что вы используете минимальную полосу пропускания, но она будет использовать больше ресурсов ЦП и замедлит время подготовки к повторной синхронизации, поскольку обеим сторонам необходимо сначала проверить файлы контрольной суммы, чтобы определить, какие блоки передать. Если вы используете флаг -c и у вас есть большие файлы (например, файлы базы данных) и / или нестабильное соединение, рассмотрите возможность добавления --partial --append, что позволит вам возобновить передачу после прерывания соединения.