备份你的Raspberry Pi并不需要很复杂。虽然有许多高级的备份解决方案可供选择,但有时最简单的方法才是最有效的。在本文中,我将向你展示如何使用rsync——一个虽小但功能强大的命令行工具,非常适合为你的Raspberry Pi设置创建可靠的本地备份。
Rsync(远程同步)是一个强大的文件同步和传输工具,它预先安装在你的Raspberry Pi上。
其核心功能是高效地将文件从一个位置复制到另一个位置,但它比简单的复制操作要智能得多。它只传输已更改的文件部分,从而节省时间和系统资源。这对于备份频繁更改的大文件特别有用。

我主要使用rsync来备份Raspberry Pi上重要的用户数据。例如,我在Raspberry Pi上维护一个照片库服务器,rsync非常适合将所有这些珍贵图片的备份副本保存在外部驱动器上,并自动检测并复制新文件或已修改的文件。
与复制整个文件的备份工具不同,rsync只传输更改的部分,这使得备份速度显著提高,并减少了SD卡的磨损。其命令行界面使其非常适合与cron作业结合进行自动化,而内置的校验和则确保备份的完整性。最重要的是,rsync的轻量级特性意味着,除非当前正在运行备份过程,否则它不会减慢你的Raspberry Pi速度,也不会占用太多的SD卡存储空间。
出于这些原因,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”中。
在依赖备份之前,你应该验证它是否工作正常。最简单的检查方法是使用rsync的模拟运行选项,可以指定为-n或--dry-run。运行以下命令:
rsync -avn --delete /home/pi/folder /media/backup.
如果你的备份是最新的,则不应显示需要传输的文件。

为了进行更彻底的验证,你可以向rsync命令中添加-c或--checksum选项。虽然这比默认的时间戳和大小比较要慢,但它通过计算校验和来确保源和备份之间的每个文件都完全相同。只需运行:
rsync -avc --delete /home/pi/folder /media/backup
验证备份的最详细方法是使用diff命令,它比较源和备份位置之间的每个文件和目录。要进行此验证,请使用:
diff -r /home/pi/folder /media/backup/folder
-r选项告诉diff递归检查所有子目录。如果命令没有产生输出,则意味着你的备份与源完全相同。如果有差异,diff将显示哪些文件不同或缺失。
在某些情况下,备份整个Raspberry Pi SD卡可能比只备份几个重要文件夹更方便、更安全。
要使用rsync创建完整的Raspberry Pi备份,你需要一个备份目标——另一张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以人类可读的格式显示文件大小和传输速度。
虽然手动创建的完整备份很有用,但我更喜欢使用Linux内置的cron调度程序来自动化它们。要设置它,在你的主目录中创建一个名为“backup-pi.sh”的文件,内容如下:
#!/bin/bashBACKUP_DRIVE="/media/backup"LOG_FILE="/home/pi/backup-log.txt" # Check if backup drive is mountedif ! mountpoint -q $BACKUP_DRIVE; then echo "Backup drive not mounted at $BACKUP_DRIVE" >> $LOG_FILE exit 1fi # Create timestamp for loggingdate >> $LOG_FILE # Run backup with error checkingsudo rsync -avxhP --delete \ --exclude-from=/home/pi/backup-exclude.txt \ / $BACKUP_DRIVE/rootfs/ \ >> $LOG_FILE 2>&1 # Record backup completionecho "Backup finished at $(date)" >> $LOG_FILEecho "-------------------" >> $LOG_FILE
使脚本可执行,然后使用cron进行调度。输入crontab -e并添加以下行以在每天午夜运行备份:
0 0 * * * /home/pi/backup-pi.sh

使用 Rsync 恢复 Raspberry Pi 备份
恢复单个文件或目录的过程非常简单。只需在 rsync 命令中交换源和目标位置即可。例如,要从备份中恢复您的照片库,可以使用以下命令:
rsync -av /media/backup/home/david/immich-app/ /home/david/immich-app/
要进行完整的系统恢复,首先需要在 SD 卡上全新安装 Raspberry Pi OS。首先,在新的 SD 卡上安装一份全新的 Raspberry Pi OS。完成后,使用新的 SD 卡启动您的 Pi 并完成初始设置过程。接下来,将备份驱动器连接到您的 Pi。当所有设备都已正确连接和挂载后,您可以使用 rsync 命令恢复备份:
sudo rsync -avxhP /media/backup/rootfs/ /
恢复完成后,建议重启您的 Pi 以检查所有恢复的文件是否已正确加载。您还应该验证重要的服务和配置是否按预期工作。
如果在恢复后某些应用程序无法正常工作,请检查其日志文件(通常位于 /var/log/ 目录下)以查找任何与权限相关的错误。您可能需要运行以下命令来修复主目录文件的所有权:
sudo chown -R $USER:$USER /home/$USER
如您所见,使用 rsync 进行恢复与创建备份一样简单——只需在命令中反转源和目标路径即可。
虽然我更喜欢 rsync 命令行界面的简洁性,但如果您对终端操作不太熟悉,还有一些出色的图形用户界面 (GUI) 替代方案可供选择。例如,Syncthing 允许您在不同系统之间同步多个文件夹,而 Timeshift 则提供了一个简洁的界面,提供系统快照功能。无论您选择哪种工具,重要的是定期对您的 Raspberry Pi 进行备份,以保护您宝贵的数据和系统配置。
全部0条评论
快来发表一下你的评论吧 !