Как сделать резервную копию вашего Raspberry Pi

Резервное копирование Raspberry Pi Rsync

Создание резервной копии вашего Raspberry Pi не должно быть сложным. Хотя существует множество сложных решений для резервного копирования, иногда самый простой подход оказывается самым эффективным. В этой статье я покажу вам, как использовать rsync – маленький, но мощный инструмент командной строки, который идеально подходит для создания надежных локальных резервных копий вашей конфигурации Raspberry Pi.

Почему Rsync – лучший инструмент для резервного копирования вашего Pi

Rsync (удаленная синхронизация) – это мощный инструмент синхронизации и передачи файлов, который предустановлен на вашем Raspberry Pi.

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

Человек с Rsync на Raspberry Pi

Я в основном использую rsync для резервного копирования своих важных пользовательских данных на Pi. Например, я поддерживаю сервер фотогалереи на своем Raspberry Pi, и rsync идеально подходит для сохранения резервной копии всех этих ценных изображений на внешнем диске, с автоматическим определением и копированием новых или измененных файлов.

В отличие от инструментов резервного копирования, которые копируют целые файлы, rsync переносит только измененные части, что значительно ускоряет процесс резервного копирования и снижает износ вашей SD-карты. Его интерфейс командной строки делает его идеальным для автоматизации с помощью cron-задач, в то время как встроенная проверка контрольных сумм обеспечивает целостность резервной копии. И что самое главное, легкость rsync означает, что он не замедлит вашу Pi, если процесс резервного копирования в данный момент не запущен, и не займет слишком много места на SD-карте.

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

Использование Rsync для резервного копирования файлов и папок Raspberry Pi

Самый простой способ создать резервную копию директории – использовать команду:

rsync -av /source/directory /backup/location

Например, чтобы создать резервную копию своей домашней директории на внешнем диске, смонтированном по пути “/media/backup”, я использую команду:

rsync -av --delete /home/david/immich-app /media/backup

для резервного копирования базы данных своей фотогалереи.

Резервное копирование папки с помощью Rsync

Вот что делают разные параметры:

  • -a включает архивный режим, который сохраняет разрешения файлов, права собственности и временные метки
  • -v предоставляет подробный вывод, чтобы я мог видеть, что копируется.
  • --delete удаляет из резервной копии файлы, которые больше не существуют в источнике.

Примечание: Вам также следует знать, что rsync особенно чувствителен к завершающим слэшам в путях. Завершающий слэш в источнике означает «скопировать содержимое этой директории», а не саму директорию. Например, rsync -av --delete /home/pi/folder /media/backup копирует содержимое «folder» непосредственно в «backup», тогда как отсутствие слэша копирует саму директорию «folder» в «backup».

Проверьте резервную копию Raspberry Pi

Прежде чем полагаться на вашу резервную копию, вы должны убедиться, что она была создана правильно. Самый простой способ проверить это – использовать опцию пробного запуска с rsync, которую можно указать как -n или --dry-run. Выполняя команду:

rsync -avn --delete /home/pi/folder /media/backup

должно показать, что никаких файлов не нужно переносить, если ваша резервная копия актуальна.

Сухой запуск резервного копирования Raspberry Pi с использованием Rsync

Для более тщательной проверки вы можете добавить параметр -c или --checksum к вашей команде rsync. Хотя это медленнее, чем обычное сравнение по времени и размеру, это гарантирует, что каждый файл полностью идентичен между источником и резервной копией, вычисляя контрольные суммы. Просто выполните:

rsync -avc --delete /home/pi/folder /media/backup

Самый детальный способ проверить вашу резервную копию – использовать команду diff, которая сравнивает каждый файл и директорию между вашими источниками и резервными копиями. Чтобы выполнить эту проверку, используйте:

diff -r /home/pi/folder /media/backup/folder

Опция -r говорит diff проверять все подпапки рекурсивно. Если команда не выводит ничего, это означает, что ваша резервная копия идентична источнику. Если имеются различия, diff покажет, какие файлы отличаются или отсутствуют.

Создание полных резервных копий Raspberry Pi с помощью Rsync

В некоторых ситуациях может быть удобнее и безопаснее создать резервную копию всей SD-карты Raspberry Pi, а не только нескольких важных папок.

Чтобы создать полные резервные копии Raspberry Pi с использованием rsync, вам потребуется место назначения для резервной копии – либо другая SD-карта, либо внешний диск с достаточным пространством для хранения всей вашей системы. Резервный диск должен быть отформатирован с файловой системой, совместимой с Linux, такой как ext4, чтобы правильно сохранить все разрешения и атрибуты файлов.

Самая сложная часть резервного копирования всей системы Raspberry Pi – это правильное обращение с особыми системными директориями и файлами. На мой взгляд, самым простым решением является исключение системных директорий, которые либо не нужно резервировать, либо могут вызвать проблемы при восстановлении. Создайте файл с именем “backup-exclude.txt” и добавьте в него следующие системные директории, которые следует исключить из резервного копирования:

  • /proc/* # Информация о процессе в режиме выполнения
  • /sys/* # Информация о ядре и системе
  • /dev/* # Устройства файлов
  • /tmp/* # Временные файлы
  • /run/* # Данные в режиме выполнения
  • /mnt/* # Точки монтирования
  • /media/* # Съемные носители
  • /home/pi/.cache/* # Кэш файлов пользователя
  • /lost+found # Директория восстановления файловой системы

С этими исключениями вы можете закрыть как можно больше запущенных приложений и затем выполнить следующую команду резервного копирования:

sudo rsync -avxhP --delete --exclude-from=/home/pi/backup-exclude.txt / /media/backup/rootfs/

Опция -x предотвращает пересечение границ файловой системы с помощью rsync, что может вызвать проблемы с системными директориями. Опция -h заставляет rsync показывать размеры файлов и скорости передачи в удобочитаемом формате.

Автоматизация резервного копирования rsync

Хотя создание полных резервных копий вручную полезно, я предпочитаю автоматизировать их с помощью встроенного планировщика cron в Linux. Чтобы настроить это, создайте файл с именем “backup-pi.sh” в вашей домашней директории с содержимым:

#!/bin/bash  
BACKUP_DRIVE="/media/backup"  
LOG_FILE="/home/pi/backup-log.txt"  
  
# Проверка, смонтирован ли диск резервного копирования  
if ! mountpoint -q $BACKUP_DRIVE; then  
echo "Диск резервного копирования не смонтирован по адресу $BACKUP_DRIVE" >> $LOG_FILE  
exit 1  
fi  
  
# Создание временной метки для журналирования  
date >> $LOG_FILE  
  
# Выполнение резервного копирования с проверкой ошибок  
sudo rsync -avxhP --delete \  
--exclude-from=/home/pi/backup-exclude.txt \  
/ $BACKUP_DRIVE/rootfs/ \  
>> $LOG_FILE 2>&1  
  
# Запись завершения резервного копирования  
echo "Резервное копирование завершено в $(date)" >> $LOG_FILE  
echo "-------------------" >> $LOG_FILE

Сделайте скрипт исполняемым с помощью chmod +x backup-pi.sh, затем запланируйте его с помощью cron. Введите crontab -e и добавьте эту строку, чтобы запускать резервное копирование ежедневно в полночь:

00 00 * * * /home/pi/backup-pi.sh

Cron Raspberry Backup

Восстановление резервных копий Rsync Raspberry Pi

Для восстановления отдельных файлов или директорий процесс прост. Просто поменяйте местами источник и назначение в вашей команде rsync. Например, чтобы восстановить вашу фотогалерею из резервной копии:

rsync -av /media/backup/home/david/immich-app/ /home/david/immich-app/

Для полного восстановления системы вам сначала потребуется свежая установка Raspberry Pi OS на вашей SD-карте. Начните с того, что установите свежую копию Raspberry Pi OS на новую SD-карту. После этого загрузите вашу Pi с новой SD-карты и завершите процесс первоначальной настройки. Далее подключите диск резервного копирования к вашей Pi. Когда все будет подключено и правильно смонтировано, вы можете восстановить свою резервную копию, используя команду rsync:

sudo rsync -avxhP /media/backup/rootfs/ /

После завершения восстановления я рекомендую перезагрузить вашу Pi, чтобы проверить, загружены ли все восстановленные файлы правильно. Также следует проверить, что ваши важные сервисы и конфигурации работают как ожидалось.

Если некоторые приложения не работают после восстановления, проверьте их журналы (обычно в /var/log/) на наличие ошибок связанной с разрешениями. Вам может понадобиться выполнить:

sudo chown -R $USER:$USER /home/$USER

чтобы исправить права собственности на файлы в вашей домашней директории. Как видите, восстановление с помощью rsync так же просто, как и создание резервных копий – просто поменяйте местами пути источника и назначения в ваших командах.

Хотя мне нравится простота командной строки rsync, есть несколько отличных альтернатив с графическим интерфейсом, если вы не уверены в терминале. Например, Syncthing позволяет синхронизировать несколько папок на разных системах, в то время как Timeshift предлагает функциональность создания снимков системы с чистым интерфейсом. Какой бы инструмент вы ни выбрали, важно поддерживать регулярные резервные копии вашего Raspberry Pi для защиты ваших ценных данных и системных конфигураций.

Все изображения сделаны Дэвидом Морео.