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

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

Я в основном использую 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для резервного копирования базы данных своей фотогалереи.

Вот что делают разные параметры:
-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должно показать, что никаких файлов не нужно переносить, если ваша резервная копия актуальна.

Для более тщательной проверки вы можете добавить параметр -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
Восстановление резервных копий 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 для защиты ваших ценных данных и системных конфигураций.
Все изображения сделаны Дэвидом Морео.