Rsync 的备份

Rsync 的备份,第1张

实验所需环境

今日内容:备份

1.什么是备份

备份就是把文件在复制一份存储起来(给文件增加一个副本)

2.为什么要做备份

2.1数据非常重要

2.2保证数据不丢失

2.3快速的恢复数据

3.能不能不做备份

可以不做数据备份,不重要的数据不做备份,重要的数据一定要做备份。

4.备份应该咋样做,分为两种

完全备份:完整的复制一份。但是完整备份缺点是效率低下,占用的空间多。

增量备份:只备份数据变化的那一部分,效率较高节省空间。

5.备份使用的工具

本地备份:cp (完整备份,每次都全部拷贝一下)

远程备份:scp 、rsync

6.备份工具rsync基本介绍

rsync remote rsync远程同步,可以实现不同主机之间的同步,同时支持增量和全量的同步方式。

7.rsync备份工具应用几种场景

前置条件:

​ 推push:将本地的数据推送到备份服务器

​ 拉pull:将备份服务器的数据拉取到本地

8.rsync三大传输模式

9.查看rsync的帮助手册

1.本地传输方式:单个主机之间的数据拷贝类似于cp

2.远程传输方式,借助ssh协议进行传输意味着他在传输的过程中需要知道传输端的用户名和密码

*2.1远程传输方式以文件为示例

[root@oldboy ~]# rsync -azv <u>/etc/ </u> [email protected]:/opt/

[root@oldboy ~]# rsync -azv <u>/etc </u> [email protected]:/opt/

3.守护进程模式:不使用系统用户,使用的是一个虚拟的用户(不存在的用户)来实现推送

6.rsync选项

备份 点文件 的习俗自古有之,arch 还为此单独开了一个 页面

我感觉比较好用的是 https://github.com/twpayne/chezmoi

然而, chezmoi 不支持用户路径以外的文件,其他工具我也懒得用了,索性用 rsync 自己配一个

写入以下内容:

上述命令中参数的含义分别为:

可以将 DESTINATION 设置到一个 git 路径下,同步成一个私有仓库即可。

也可以用 tar 压缩成一个压缩包,这样还能保留文件的权限信息。当然,使用 git-cache-meta

也可以保留权限信息

缺点是不同系统之间只能自己建分支维护,但是胜在简单

根据 使用 Systemd Timer 调度任务 可以创建三个文件来用来创建定时运行的备份

三个文件分别为:

/bin/dot_backup.sh

/etc/systemd/system/dot_backup.service

/etc/systemd/system/dot_backup.timer

根据以上内容,实际上还可以创建一个任务用来定期将其打包成 tar 或者进行增量备份并上传,但是我现在还没有更新这部分内容的计划,就先搁置了。

上面已经将文件备份到指定文件夹,但是如果直接使用 git 上传上去的话,一方面是会丢失权限,另一方面也不够安全。

打包的命令如下:

上面第一行是让 xz 自动使用多线程,下面先使用 tar 将文件夹压缩成 tar 再通道到 xz 进行最高限度的压缩

一般来说

需要解密的时候只需要将 -e 换成 -d 就行了

加密要求不高的话还可以使用 dd conv=swab 进行字节反转,这种方式快速而且简单

这里我又做了一个测试:

压缩文件为 mp4,653MB(684558471)

因此,以后备份方式改成 zstd+openssl ,如此,完整的备份命令如下:

gpg 对称加密的方式如下:

在系统管理员的工作中 备份 无疑是一个重要的部分。当没有完整备份或者良好规划的备份和实施时,就可能或早或晚不可挽回地丢失重要的数据。

所有公司,无论大小, 都运营在数据之上 。考虑到 丢失业务数据造成的经济和业务损失, 从最小的个人公司到最大的跨国企业,没有一个公司能在丢失大部分数据以后得以幸存。你的办公室可以通过保险赔偿重建,但是你的数据就不可能再恢复了。

这里提到的丢失是指 数据的完全损坏 。而不是指数据被偷走,那是另一种灾难。我这里说的是数据被完全摧毁。

即使你只是个人用户而不是一个企业,备份你自己的数据也是非常重要的,我有二十年来的个人财务数据和我现在已经关闭的企业的数据,以及大量的电子发票。也包括近年来我创作的大量不同类型的文档、报告和数据报表。我不想失去任何这些数据。

所以备份是我数据长期安全的必要保障。

有许多软件可以执行备份。大多数 Linux 发行版提供至少一种开源的备份软件。同时也有许多商业备份软件,但是这些都不符合我的需求,所以我决定使用基础的 Linux 工具来进行备份。

在我为 Open Source Yearbook 写的文章, 最佳搭档之 2015:tar 和 ssh 中,我说明了昂贵的商业备份软件在设计实施可行的备份计划中并不是必要的。

从去年开始我尝试了另一种选择, rsync 命令,它有许多我已经从中受益的有趣特性。我的主要需求是所创建的备份,用户不需要解压备份压缩包就能定位和恢复文件,以便节约创建备份的时间。

这篇文章的目的只是为了说明 rsync 在我的备份方案中的作用。并不是 rsync 的全部能力或者它的各种适用场景的概览。

Andrew Tridgell 和 Paul Mackerras 编写了 rsync ,首次发布于 1996 年。 它的目标是向另一台电脑同步文件。 你注意到了他们为什么取这个名字了吗(remotely synchronize )?它是大多数发行版都提供的开源软件。

rsync 能够用于 同步两个目录或目录树 ,无论它们是在同一个计算机上还是不同的计算机上,而且不仅如此,它还能做到更多。它创建或者更新的目录与源目录完全一样。新的目录不是以 tar 或 zip 等打包存储,而是普通的目录和文件,常见的 Linux 工具都能轻松访问,而这正是我所需要的。

rsync 的最重要的特性之一是它 处理源目录被修改的已有文件的方式 。它使用 分块校验来比较源文件和目标文件 ,而不是从源把整个文件复制过去。如果两个文件所有块的校验和都相同,那么就不用传输数据。否则只有被改变的块被传输。 这样节约了远程同步消耗的大量时间和带宽 。比如,我第一次使用 rsync 脚本来把我所有的主机备份到一个外接的大型 usb 硬盘上需要三个小时,因为所有的数据都需要传输过去。而接下来的备份需要的时间就只是 3 到 8 分钟,这取决于上次备份以来创建和改变了多少文件。我使用 time 命令来记录实际花费的时间。昨天晚上,我只花了三分钟来从六个远程系统和本地工作站备份大概 750 Gb 数据。实际上只有在白天改变的几百 Mb 数据需要备份。

rsync -aH sourcedir targetdir可以用来同步两个目录及其任意子目录的内容。也就是说,在新目录的内容和源目录同步完之后,它们的内容完全一样。

-a 选项表示归档模式,它会保持权限、所有关系和符号(软)链接。-H 选项用来保持硬链接。注意源目录和目标目录都可以在远程主机上。

另外一个特性: 从源目录删除了一些文件 。rsync 默认只复制新的和改变过的文件到新目录里,而不去改变新目录里被我们删除的文件,但是如果你想让那些在源目录里被删除的文件在新目录里也被删除,那么你可以加上 --delete 选项来删除。

第3个特性: --link-dest 每日备份只花费很少的额外空间和很短的时间 。用这个选项指定前一天的备份目录,以及今天的备份目录,然后 rsync 会创建今天的新备份目录,并将昨天备份目录里的每一个文件在今天的备份目录中创建硬链接。

第4个特性: --exclude 排除不想要备份的目录或者文件 。

现在的命令汇总为

rsync -aH --delete --exclude Cache  --link-dest=yesterdaystargetdir  sourcedir  todaystargetdir

可以依靠 rsync 的大量选项来定制你的同步过程。大多数情况而言,我刚刚描述的简单命令就足以胜任我的个人需要。你可以阅读 rsync 丰富的文档来了解它的其他能力。

我的备份自动运行因为—“万物皆可自动化”。我写了一个 BASH 脚本使用 rsync 创建每天的备份。包括确保备份介质被挂载,生成每天的备份目录的名字,以及在备份介质中创建合适的目录结构,最后执行真正的备份再卸载备份介质。

cron 每天早晨执行脚本确保我永远不会忘记备份。

所有没有经过测试的备份计划都不完整的。你可以通过测试恢复某个文件或者整个目录,以确保备份在照常工作并且可以通过它来在数据全部丢失后恢复。我见过太多备份由于种种理由失败,以及由于缺乏测试忽略的问题导致宝贵的数据被丢失。

选择一个文件恢复到比如 /tmp 的测试目录,这样你就不会覆盖任何备份后被更新的文件。验证文件的内容是否是你预期的。恢复用 rsync 备份的文件仅仅只是找到你的备份文件然后把它复制到你想恢复的地方去那样简单。

Rsync官方地址:https://rsync.samba.org/

该文提到的 Rsync缺点 ,供学习参考:

1. 大量小文件同步会比较慢,需要比对较长时间,有可能会造成rsync进程停止。

解决思路:将小文件进行打包,然后在同步,减少比对时间,传输效率提高。

2. 同步大文件会出现中断情况,而且长时间同步会造成网络资源被耗尽。

解决思路:配置限速同步,未同步完之前修改为隐藏文件,同步完成后修改为正常文件。

3. 扫描百万级别文件非常耗时

随着应用系统规模的不断扩大,对数据的安全性和可靠性提出了更高的要求,rsync便暴露出了很多不足之处。首先,rsync同步数据时,需要扫描所有文件后进行比对,然后进行差量传输。如果文件数量达到了百万量级及以上时,扫描文件就非常耗费时间,有时还会出现只是很少一部分数据发生了变化,因此rsync就变得非常低效了。

4. rsync不能够实时监测、同步数据

虽然它可以通过Linux守护进程的方式触发同步,但是两次触发动作一定会出现时间差,可能导致服务器端和客户端的数据出现不一致,后期无法在出现故障时完全恢复数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11764227.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存