爱极客专注分享-好玩的docker应用-源码分享

银河麒麟系统定时自动同步备份文件

银河麒麟系统定时自动同步备份文件

上一篇我们介绍了如何手动备份资料,文末还给大家预告了这一篇要实现定时自动同步备份资料的功能,而且是加密传输,安全性很有保障,能够极大地解放大家的脑袋和双手,希望你们能喜欢。

本篇解决的实际问题

实现定时自动同步文件,可以避免每次备份传输时手动输入密码。

解决思路

使用rsync进行远程文件同步,配置ssh密钥认证。在整个同步过程中,公钥加密,私钥解密。私钥仅仅存放在本地主机,保证了登录安全。

配置过程中需要解决远程登录权限、密钥加解密等一系列问题,要细心、耐心一点,不要放弃,一定会配置成功的。我也是研究了好久,经历了九九八十一难才配置成功的。

同步前,先解决以下三个问题:

1.远程主机允许ssh密钥登录权限

2.本地生成密钥对,并将公钥部署到远程主机

3.修改远程主机公钥文件夹权限

环境说明:本地主机是银河麒麟V10版本,远程主机是V10 SP1版本。

~~~开始配置~~~

1.远程主机允许ssh密钥登录权限

登录远程主机,修改配置文件 /etc/ssh/sshd_config :

vim /etc/ssh/sshd_config

按照以下参数修改,开启密钥登录,关闭密码登录。

Include /etc/ssh/sshd_config.d/*.conf
Port 22


HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key


PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PermitEmptyPasswords yes

然后重启服务:

sudo systemctl restart sshd

2.本地生成一对密钥(公钥和私钥),将公钥部署到远程主机

(1)生成SSH密钥对

ssh-keygen -t rsa -b 4096

如下图所示,输入密钥存放的路径,默认路径为:~/.ssh/id_rsa 。这里的~表示用户主目录/home/ht 。这里采用默认路径,直接按回车键。

银河麒麟系统定时自动同步备份文件

如下图所示,提示设置密码、确认密码。这里直接按两次回车键,设置为空密码。

银河麒麟系统定时自动同步备份文件

最终结果如下图所示,提示秘钥对生成成功,保存在 ~/.ssh/ 目录下面。

银河麒麟系统定时自动同步备份文件

(2)查看公钥

生成密钥对后,公钥会保存在 ~/.ssh/id_rsa.pub 文件中。用以下命令查看公钥内容:

cat ~/.ssh/id_rsa.pub

公钥应该同步复制到远程主机~/.ssh/authorized_keys文件内。

(3)将公钥复制到远程主机

ssh-copy-id -i ~/.ssh/id_rsa kylin@192.168.0.118

执行上述命令后,系统提示要输入远程主机上该用户的密码。输入密码并按回车键,指定的公钥就会复制到远程主机 ~/.ssh/authorized_keys 文件中。

3.修改远程主机公钥文件夹权限

SSH对密钥和文件夹权限要求非常严格。权限修改如下:

(1)远程主机公钥的上级两个目录权限修改为700。

chmod 700 /home/kylin
chmod 700 /home/kylin/.ssh

kylin是远程主机用户名,大家根据自己情况修改。

(2)远程主机公钥文件authorized_keys的权限修改为644。

chmod 644 /home/kylin/.ssh/authorized_keys

文件同步操作步骤:

1.创建一个 shell 脚本rsync_sync.sh

vim rsync_sync.sh

2.在脚本中写入 rsync 命令,同时手动执行脚本,检测能否正常同步到备份电脑。

#!/bin/bash
rsync -avz -e "ssh -i /home/ht/.ssh/id_rsa" /home/ht/share/ kylin@192.168.0.118:/home/kylin/htbackup/

参数说明

基本语法:rsync [选项] 源 目标
[选项]
-a:归档模式,用于递归复制并保持文件属性。
-v:详细模式,显示正在处理的文件信息。
-z:压缩文件数据,减少传输的数据量。
-n:模拟运行,不实际进行任何更改,用于预览操作效果。
-P:显示进度,并部分传输文件。
-e:使用指定的私钥。
--delete:删除目标目录中在源目录中不存在的文件,以保持目标目录与源目录一致。
--exclude:排除匹配的文件或目录。
--include:包含匹配的文件或目录。
@前的kylin是备份终端电脑的用户名,@后的ip为备份终端ip地址,ip和路径之间用:连接。

3.给脚本文件添加执行权限

chmod +x rsync_sync.sh

4.设置 crontab 定时同步任务

crontab -e
* * * * * /home/ht/rsync_sync.sh >> /home/ht/sync.log 2>&1

参数说明

基本语法:* * * * * [command]
每条命令由五个字段和一个命令组成:
第1个字段:分钟(0-59)
第2个字段:小时(0-23)
第3个字段:日期(1-31)
第4个字段:月份(1-12)
第5个字段:星期几(0-7,其中0和7都表示星期天)
[command]命令:>>和2>&1表示将标准输出、错误信息记录到日志文件sync.log
特殊字符:
 , 表示多个值,例如 1,3,5。
 - 表示一个范围,例如 1-5。
 / 表示步长,例如 */10 表示每隔10分钟。
示例:
* * * * *  表示每分钟执行一次 command 命令。建议测试时使用该命令。
0 1 * * * command 表示每天凌晨1点执行一次 command 命令。
30 18 * * 1 command 表示每周一的18:30执行一次 command 命令。
0 8 * * 1 rm /tmp/*.tmp 表示每周一早上8点清理临时文件。
0 * * * * /home/ht/backup.sh 表示每小时执行一次数据备份。

5.重启cron服务

sudo systemctl restart cron

6.检查同步情况

每隔一分钟查看一下配置的sync.log,看看是否同步成功。也可以观察远程主机同步文件夹是否成功同步了文件。

银河麒麟系统定时自动同步备份文件

如上图所示,表示文件同步成功。

7.返回第四步,重新设置 crontab 定时同步时间。

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容