Restic 应用实践:异机备份 System 日志

在Linux系统中,日志文件用于记录系统运行中的事件,包括错误安全性信息系统消息等。这些日志文件通常位于/var/log目录下。

常见日志文件

日志文件 说明
/var/log/messages 一般包括整体系统信息,其中也包含系统启动期间的日志。此外 mail,cron,daemon,kern 和 auth 等内容也记录在 /var/log/messages 日志中。
/var/log/boot.log 包含系统启动时的日志。
/var/log/daemon.log 包含各种系统后台守护进程日志信息。
/var/log/dpkg.log 包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log 包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/maillog,/var/log/mail.log 包含来着系统运行电子邮件服务器的日志信息。 注意:如,sendmail 日志信息就全部送到这个文件中。
/var/log/user.log 记录所有等级用户信息的日志。
/var/log/alternatives.log 更新替代信息都记录在这个文件中。
/var/log/btmp 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,last -f /var/log/btmp | more
/var/log/wtmp 记录当前正在登录和历史登录系统的用户信息,默认由last命令查看 last -n 5 /var/log/wtmp
/var/log/cron 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
/var/log/secure 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
/var/log/faillog 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
/var/log/samba 包含由Samba存储的信息
/var/log/dmesg 和系统启动相关

Restic 备份日志文件

在开始试用 Restic 进行异机备份前,我们需要根据备份目的地确定我们的备份方式,下面我们以常见的 基于 SFTP 协议的异机备份对象存储备份 两种方式分别说明是如何进行的。

基于 SFTP 协议的异机备份

假设有3台机器,主机信息如下:

主机 IP 说明
主机A 192.168.31.1 被备份主机
主机B 192.168.31.2 备份服务器
主机间免密钥互信

为了通过 SFTP 备份数据,你首先必须设置一个带有 SSH 的服务器并让其知道你的公钥。无密码登录非常重要,因为如果服务器提示输入凭据,则无法进行自动备份。

从主机A备份数据到主机B,需要主机A到主机B免密钥和互信,在主机A执行下面命令:

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.31.2
初始化备份

配置服务器后,只需更改命令中的 URL 方案即可轻松实现 SFTP 存储库的设置init:

在服务器A上 初始化备份,/backup_192.168.31.1 为 备份服务器的相对目录。

# 格式:restic -r sftp:user@host:/srv/restic-repo init
restic -r sftp:root@192.168.31.2:/backup_192.168.31.1 init

查看B服务器

备份操作

执行数据备份

restic -r sftp:root@192.168.31.2:/data backup ./

查看备份

restic -r sftp:root@106.53.117.41:/data snapshots

查看备份内容

restic -r sftp:root@106.53.117.41:/data ls 875a2a32

恢复快照

restic -r sftp:root@106.53.117.41:/data restore 875a2a32 -t ./
restic -r sftp:root@106.53.117.41:/data restore 875a2a32 –target ./

删除备份

restic -r sftp:root@106.53.117.41:/data forget 875a2a32

免密码

上面备份的时候,都需要输入密码,肯定不适合脚本自动备份,所以我们还需要使用–password-file参数来达到自动读取密码的步骤。

#先将密码,比如moerats保存在/root/resticpasswd文本中
echo ‘xxzx@789’ > /root/resticpasswd

#然后在备份命令中加–password-file参数来读取文本中的密码,这里以sftp为例
restic -r sftp:root@106.53.117.41:/data –verbose backup ./ –password-file /root/resticpasswd

对象存储备份

支持基于s3协议的后端对象存储,例如minio或者腾讯/阿里对象存储

假设有3台机器,主机信息如下:

主机 IP 说明
主机A 192.168.31.1 被备份主机
主机B 192.168.31.2 备份服务器
OSS-MinIO 192.168.31.100 OSS 对象存储
阿里云对象存储
$ export AWS_ACCESS_KEY_ID=<YOUR-OSS-ACCESS-KEY-ID>
$ export AWS_SECRET_ACCESS_KEY=<YOUR-OSS-SECRET-ACCESS-KEY>
 $ ./restic -o s3.bucket-lookup=dns -o s3.region=<OSS-REGION> -r s3:https://<OSS-ENDPOINT>/<OSS-BUCKET-NAME> init
$ restic -o s3.bucket-lookup=dns -o s3.region=oss-eu-west-1 -r s3:https://oss-eu-west-1.aliyuncs.com/bucketname init

restic -o s3.bucket-lookup=dns -o oss-cn-beijing.aliyuncs.com -r s3:https://xueltestoss.oss-cn-beijing.aliyuncs.com init

创建 Repository

export AWS_ACCESS_KEY_ID=LTAIxxxxxxxdZa9
export AWS_SECRET_ACCESS_KEY=XvHxxxxxxxxxxxxxxxxxJt3wb7
restic -o s3.bucket-lookup=dns -o s3.region=oss-cn-beijing.aliyuncs.com -r s3:https://xueltestoss.oss-cn-beijing.aliyuncs.com/xueltestoss init

对象存储上文件

免密钥

#先将密码,比如moerats保存在/root/resticpasswd文本中
echo ‘xxzx@789’ > /root/resticpasswd

#然后在备份命令中加–password-file参数来读取文本中的密码,这里以sftp为例

执行备份

restic -r s3:https://oss-cn-beijing.aliyuncs.com/xueltestoss --password-file /root/resticpasswd backup /data/

其他恢复操作基本上和sftp的一致。

初次全量备份

# 初始化 restic 仓库
restic init

# 备份 /var/log 目录
restic backup /var/log

# 如果你想每天自动备份系统日志,可以使用 crontab
echo "0 2 * * * /usr/bin/restic backup /var/log" | crontab

定时增量备份

参考资料

作者:Jeebiz  创建时间:2024-08-19 09:53
最后编辑:Jeebiz  更新时间:2024-11-01 12:20