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
定时增量备份
参考资料
- https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#sftp
- 跨平台数据备份工具之restic详解:https://blog.csdn.net/A_991128a/article/details/138676501
- 如何使用Restic和MinIO进行备份: https://baijiahao.baidu.com/s?id=1783727953328934329&wfr=spider&for=pc
最后编辑:Jeebiz 更新时间:2024-11-01 12:20