我对在 Raspberry Pi 中运行的 Ubuntu 22.04 操作系统进行了 rsync 备份。备份为与 SD 卡相同分区和格式的映像文件。后来我挂载了备份镜像文件,也取出了SD卡并挂载了它。
安装在备份映像上的根分区 安装/media/writable
在 SD 卡上的根分区/media/writable1
当我列出文件目录时,我可以看到有些文件在那里,但不在源 SD 卡中。
[flex@flex-inspiron7520 ~]$ ls -l /media/writable/snap/core20/1437/etc/default
total 28
-rw-r--r-- 1 root root 460 Feb 4 2020 cryptdisks
-rw-r--r-- 1 root root 297 Sep 30 2019 dbus
-rw-r--r-- 1 root root 15 Mar 29 20:47 locale
-rw-r--r-- 1 root root 1756 Apr 14 2020 nss
-rw-r--r-- 1 root root 133 Dec 2 22:38 ssh
-rw-r--r-- 1 root root 35 Mar 29 20:47 swapfile
-rw-r--r-- 1 root root 1118 Feb 7 2020 useradd
[flex@flex-inspiron7520 ~]$ ls -l /media/writable1/snap/core20/1437/etc/default
ls: cannot access '/media/writable1/snap/core20/1437/etc/default': No such file or directory
我对 rsync 命令进行了一次试运行,它告诉我它将从源(备份映像)复制目标(SD 卡)中缺少的文件。
[flex@flex-inspiron7520 ~]$ sudo rsync -nrlpgoDv /media/writable/snap/core20/1437/etc/default /media/writable1/
sending incremental file list
default/
default/cryptdisks
default/dbus
default/locale
default/nss
default/ssh
default/swapfile
default/useradd
sent 205 bytes received 41 bytes 492.00 bytes/sec
total size is 3,814 speedup is 15.50 (DRY RUN)
顺便说一句,与该卡的备份相比,目标 SD 卡中文件丢失的原因是因为当 sd 卡连接到 Pi 并且操作系统正在运行时,文件就在那里......它们是快照应用程序仅当操作系统运行时才安装在 /snap 中。
但这不是我的问题!
我的问题
当我运行此 rsync 命令时,它会向我提供有关计划从源(备份映像)复制到目标(SD 卡)的文件的输出
sudo rsync -nrlpgoDv /media/writable /media/writable1/
有很多文件要传输,这只是前几行......
writable/var/lib/dpkg/info/python3.10-minimal.list
writable/var/lib/dpkg/info/python3.10-minimal.md5sums
writable/var/lib/dpkg/info/python3.10-minimal.postinst
writable/var/lib/dpkg/info/python3.10-minimal.postrm
writable/var/lib/dpkg/info/python3.10-minimal.preinst
writable/var/lib/dpkg/info/python3.10-minimal.prerm
writable/var/lib/dpkg/info/python3.10.list
writable/var/lib/dpkg/info/python3.10.md5sums
.
..
....
.....
writable/snap/
但是...输出中没有...行?为什么这个 rsync 命令没有列出与上面相同的文件,这些文件/media/writable/snap/core20/1437/etc/default
在/media/writable1/snap/core20/1437/etc/default
.
显然,“/snap”目录是循环设备的一组挂载点,引用位于“/var/lib/snapd/”中的 snap 应用程序。我不确定这是否相关?
更新
可能是因为两个文件系统的挂载方式有关?备份映像以只读方式安装,但 SD 卡以读写方式安装?但我的 rsync 命令尝试从备份映像进行复制,因此可能不相关?
[flex@flex 1437]$ mount | grep writable
/dev/loop0p2 on /media/writable type ext4 (ro,nosuid,nodev,relatime,errors=remount-ro,uhelper=udisks2)
/dev/sdb2 on /media/writable1 type ext4 (rw,nosuid,nodev,relatime,errors=remount-ro,uhelper=udisks2)
非常感谢任何帮助,
柔性
答案1
事实证明根本没有发生任何异常情况。
我将 Rsync 命令的输出从 KDE Konsole 窗口(文件 > 将输出另存为)保存到文本文件以查看 rsync 输出,但我猜终端仅在其缓冲区中保留一定数量的输出行。我将 rsync 命令更改为:
sudo rsync -nrlpgoDivv --log-file=/home/flex/scripts/rsynclog.log /mnt/src_root /media/writable1/
我现在可以看到 rsync 确实想要将任何丢失的文件/文件夹的内容从rootfs/snap/...
源复制到目标。无论源文件系统安装为只读还是读写,该命令都会给出相同的结果。
这并不重要,因为我现在会是这样不包括 /snap 目录从备份中删除,因为不需要。
柔性