银河麒麟桌面版RSYNC备份脚本小结

讲解视频:【银河麒麟桌面版RSYNC备份脚本小结】 https://www.bilibili.com/video/BV1bLPEzfEFZ/

下面一到八是复制的银河麒麟桌面版本备份工具运行时后台脚本。九是备份脚本重点参数学习小结。

一、系统首次备份脚本
/usr/bin/rsync -avAHXr --info=progress2 --no-inc-recursive --ignore-missing-args --delete --exclude=/backup --exclude=/cdrom --exclude=/dev --exclude=/efi --exclude=/etc/uid_list --exclude=/data/ghost --exclude=/ghost --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/run --exclude=/swap_file --exclude=/sys --exclude=/tmp --exclude=/var/lib/docker/overlay2 --exclude=/var/lib/kmre/data --exclude=/var/lib/kmre/kmre--/data/media/0/0-麒麟* --exclude=/var/lib/udisks2 --exclude=/var/log --exclude=*/backup/snapshots --exclude=/data/security-dir --exclude=/data/home --exclude=/data/root / /backup/snapshots/{42a01331-f178-4dff-99af-9531e602f0ff}/data/

二、增量备份
/usr/bin/rsync -avAXr --info=progress2 --no-inc-recursive --ignore-missing-args --link-dest=../../{42a01331-f178-4dff-99af-9531e602f0ff}/data --exclude=/backup --exclude=/cdrom --exclude=/dev --exclude=/efi --exclude=/etc/uid_list --exclude=/data/ghost --exclude=/ghost --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/run --exclude=/swap_file --exclude=/sys --exclude=/tmp --exclude=/var/lib/docker/overlay2 --exclude=/var/lib/kmre/data --exclude=/var/lib/kmre/kmre--/data/media/0/0-麒麟* --exclude=/var/lib/udisks2 --exclude=/var/log --exclude=*/backup/snapshots --exclude=/data/security-dir --exclude=/data/home --exclude=/data/root / /backup/snapshots/{d71066eb-ee49-4aa8-b3d2-c4331a564f42}/data/

三、第二次增量备份
/usr/bin/rsync -avAXr --info=progress2 --no-inc-recursive --ignore-missing-args --link-dest=../../{d71066eb-ee49-4aa8-b3d2-c4331a564f42}/data --exclude=/backup --exclude=/cdrom --exclude=/dev --exclude=/efi --exclude=/etc/uid_list --exclude=/data/ghost --exclude=/ghost --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/run --exclude=/swap_file --exclude=/sys --exclude=/tmp --exclude=/var/lib/docker/overlay2 --exclude=/var/lib/kmre/data --exclude=/var/lib/kmre/kmre--/data/media/0/0-麒麟* --exclude=/var/lib/udisks2 --exclude=/var/log --exclude=*/backup/snapshots --exclude=/data/security-dir --exclude=/data/home --exclude=/data/root / /backup/snapshots/{e5bca24a-4478-4a87-8ea1-bfa82e05a290}/data/

四、恢复系统
/usr/bin/rsync -avAHXr --info=progress2 --no-inc-recursive --ignore-missing-args --delete --exclude=/usr/bin/backup-daemon --exclude=/usr/bin/kybackup --exclude=/usr/bin/mount_fstab_efi --exclude=/usr/bin/backup-auto-efi --exclude=/usr/bin/backup-auto --exclude=/usr/bin/rsync --exclude=/usr/share/rsync --exclude=/usr/share/initramfs-tools/hooks/kybackup-hooks --exclude=/usr/share/initramfs-tools/scripts//kybackup --exclude=/etc/LICENSE --exclude=/etc/.kyinfo --exclude=/etc/.kyactivation --exclude=/etc/.kyhwid --exclude=/data/security-dir --exclude=/backup/snapshots --exclude=/data/home --exclude=/data/root --exclude-from /backup/snapshots/{c369a040-dcc5-4453-8579-7d5803f84237}/.exclude.user.txt --files-from /backup/snapshots/{c369a040-dcc5-4453-8579-7d5803f84237}/.user.txt /backup/snapshots/{c369a040-dcc5-4453-8579-7d5803f84237}/data/ /

其中,.exclude.user.txt 的内容如下:
/backup
/cdrom
/dev
/efi
/etc/uid_list
/data/ghost
/ghost
/lost+found
/media
/mnt
/proc
/run
/swap_file
/sys
/tmp
/var/lib/docker/overlay2
/var/lib/kmre/data
/var/lib/kmre/kmre--/data/media/0/0-麒麟*
/var/lib/udisks2
/var/log
*/backup/snapshots
/data/security-dir
/data/home
/data/root

.user.txt 内容如下:
/

五、恢复系统但保留用户数据
/usr/bin/rsync -avAHXr --info=progress2 --no-inc-recursive --ignore-missing-args --delete --exclude=/home --exclude=/root --exclude=/data --exclude=/var/lib/biometric-auth --exclude=/data/sec_storage_data --exclude=/etc/passwd --exclude=/etc/shadow --exclude=/etc/group --exclude=/etc/gshadow --exclude=/etc/sudoers --exclude=/data/home --exclude=/data/root --exclude=/var/lib/AccountsService --exclude=/etc/sssd --exclude=/var/lib/sss --exclude=/usr/share/sssd --exclude=/etc/ipa --exclude=/etc/krb5.keytab --exclude=/etc/krb5.conf --exclude=/var/lib/ipa-client --exclude=/etc/nsswitch.conf --exclude=/etc/pam.d --exclude=/etc/hosts --exclude=/etc/hostname --exclude=/etc/hedron --exclude=/etc/kcm --exclude=/usr/hedron/hedronagent --exclude=/etc/.kyinfo --exclude=/etc/LICENSE --exclude=/etc/ssl/certs --exclude=/usr/share/ca-certificates --exclude=/etc/NetworkManager --exclude=/var/lib/pam --exclude=/usr/share/applications/kylin-os-installer.desktop --exclude=/.local/share/applications/kylin-os-installer.desktop --exclude=/etc/xdg/autostart/kylin-os-installer.desktop --exclude=/usr/bin/backup-daemon --exclude=/usr/bin/kybackup --exclude=/usr/bin/mount_fstab_efi --exclude=/usr/bin/backup-auto-efi --exclude=/usr/bin/backup-auto --exclude=/usr/bin/rsync --exclude=/usr/share/rsync --exclude=/usr/share/initramfs-tools/hooks/kybackup-hooks --exclude=/usr/share/initramfs-tools/scripts//kybackup --exclude=/etc/LICENSE --exclude=/etc/.kyinfo --exclude=/etc/.kyactivation --exclude=/etc/.kyhwid --exclude=/data/security-dir --exclude=*/backup/snapshots --exclude=/data/home --exclude=/data/root --exclude-from /backup/snapshots/{c369a040-dcc5-4453-8579-7d5803f84237}/.exclude.user.txt --files-from /backup/snapshots/{c369a040-dcc5-4453-8579-7d5803f84237}/.user.txt /backup/snapshots/{c369a040-dcc5-4453-8579-7d5803f84237}/data/ /

六、备份数据
/usr/bin/rsync -avAHXr --info=progress2 --no-inc-recursive --ignore-missing-args --delete --files-from /tmp/.backup.user / /backup/snapshots/{ccfaa3d2-e7df-4177-907a-2cc6e916c8be}/data/

七、恢复数据
/usr/bin/rsync -avAHXr --info=progress2 --no-inc-recursive --ignore-missing-args --delete --files-from /backup/snapshots/{0cf41a3b-4f7a-4ea8-b593-4e5f3c100bf0}/.user.txt /backup/snapshots/{0cf41a3b-4f7a-4ea8-b593-4e5f3c100bf0}/data/ //

八、制作系统镜像
/usr/bin/mksquashfs /backup/snapshots/{b13e8f08-9874-40bb-b51c-141e996ac02e}/data /ghost/kylin-x86_64-251002103348.kyimg

九、重点参数学习
一)、
--no-inc-recursive 不使用增量递归算法,使用传统的内存递归方式,后者能够精确保证硬链接关系的备份和恢复。前者有如下可能性:
空间浪费:硬链接变成独立文件,占用双倍空间
数据不一致:修改一个文件,另一个不会同步变化
恢复复杂:恢复时需要更多空间,可能无法完全复原源端结构

二)、
--link-dest 的用法 目标文件和参考文件必须在同一个文件系统,参考文件的目录是相对于目标文件的目录,如上面脚本中的 ../../{42a01331-f178-4dff-99af-9531e602f0ff}/data

三)、
增量备份中取消 -H 参数
AI答案:
在大规模系统备份中,同时使用-H和--link-dest可能导致:
内存消耗增加:硬链接池需要同时跟踪源端和--link-dest的inode信息
性能下降:判断逻辑更复杂
潜在的硬链接关系混乱:在某些边缘情况下,可能错误地合并了本不应合并的硬链接关系
虽然源端如果新增加了硬链接对,增量同步到备份会变成独立的文件,但这是极少数的情况。权衡之下采用了增量备份中取消 -H 参数

四)、
--exclude 参数期望的是相对于源目录的路径

五)、
--files-from 里面的文件列表是相对于源目录的路径,当使用了 -r 参数,文件列表是 / 的话,会同步源目录的所有文件。如果没有 -r 参数,即使加了默认含 -r 参数的 -a 参数,则只会同步源目录下的一级目录名或文件。

六)、
在同时应用 --include 和 --exclude 时,如果一个文件先定义在哪个规则里面,那个规则就生效,即使后面的规则能够匹配到这个文件也不起作用了。这就是“第一匹配规则”。

七)、
--exclude-from 和 --files-from 同时定义了文件谁生效?
--exclude-from 优先生效,--files-from 定义了需要处理的文件列表,列表之外的文件不会处理,也不会传输。

八)、
--include-from 和 --files-from 有什么区别?
--include-from 根据模式匹配要传输的文件,处理的文件范围默认是所有文件。

九)、
稀疏文件属性保留,加 -S(即--sparse),这个选项与 --inplace(就地更新,默认是从源同步的文件同步到新建的临时文件,传输完成再替换目的地原文件) 冲突。

十)、
rsync 运行时有3个命令相同的进程协同完成数据同步任务。

十一)、
不同版本 rsync 的表现可能会有差异,实际应用前应该测试。

发表评论

电子邮件地址不会被公开。 必填项已用*标注