O2OA可以外接存储服务器,但是一个存储服务器上怕磁盘损坏等问题导致文件丢失,所以需要实现文件跨服务器备份。
整体过程:
1、SSH免密登录配置
2、增加一个同步推送文件的.sh文件
3、编辑crontab 增加定时任务执行上一步的.sh文件
一、配置SSH免密登录
两台存储服务器之间需要先配置好ssh免密登录。 免密登录通常是通过公钥认证(SSH Key Pair)实现的 , 具体步骤如下:
1.生成SSH密钥对
如果还没有SSH密钥对,可以通过以下命令生成一个新的密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-
-t rsa
: 生成RSA类型的密钥 -
-b 4096
: 设置密钥长度为4096位 -
-C "your_email@example.com"
: 注释,通常用邮箱作为标识
生成过程会提示存储位置(默认是~/.ssh/id_rsa
),并可选择是否设置密码(免密登录通常选择不设置密码)。
2. 将公钥复制到SFTP服务器
使用 ssh-copy-id
命令将公钥复制到目标SFTP服务器:
ssh-copy-id username@remote_host
这会将公钥追加到远程服务器的 ~/.ssh/authorized_keys
文件中。确保远程服务器的authorized_keys
文件权限是 600
,并且.ssh
目录的权限是 700
,否则免密登录可能无效。
3. 验证免密登录
确保你可以通过SSH免密登录到SFTP服务器:
ssh username@remote_host
4. 免密连接的注意事项
服务器设置 :确保SFTP服务器允许公钥认证(在/etc/ssh/sshd_config
文件中,确保 PubkeyAuthentication yes
)。
二、增加同步文件的.SH文件
1.通过命令新增一个.sh文件
vim sync_to_93.100.sh
在.sh文件中写入同步文件的命令,将本地目录中的文件同步到远程服务器的目录上:
rsync -av --delete /data/o2serverStorage root@172.16.93.100:/data
-
rsync: 这是命令本身,表示使用
rsync
工具进行文件同步。 -
-a: 表示归档模式,等同于
-rlptgoD
,这意味着:
-
-
-r
: 递归处理子目录及其文件。 -
-l
: 保留符号链接。 -
-p
: 保留文件权限。 -
-t
: 保留修改时间。 -
-g
: 保留文件的组信息。 -
-o
: 保留文件的所有者信息。 -
-D
: 保留设备文件和其他特殊文件。
-
-
-v: 表示详细模式,显示同步过程中的详细信息。
-
--delete: 在目标目录中删除那些源目录中不存在的文件。这确保了目标目录与源目录保持一致。
-
/data/o2serverStorage: 这是源目录,即你要从哪个目录同步文件。
-
root@172.16.93.100:/data: 这是目标目录,表示将文件同步到远程服务器
172.16.93.100
上的/data
目录。root
是远程服务器上的用户名。
2.增加执行权限
使用 chmod
命令添加执行权限。
chmod +x /data/sync_to_93.100.sh
三、增加定时任务
1.执行crontab -e
命令
crontab -e
如果你是第一次使用 crontab -e
,系统会提示你选择一个编辑器。常见的编辑器有 nano
、vi
和 vim
。选择一个你熟悉的编辑器。例如,选择 nano
可以输入数字对应的选择编号,通常是 1
。
2.编辑 crontab
文件
可以在这个文件中添加定时任务,每一行代表一个定时任务。
10 23 * * * /data/sync_to_93.100.sh >> /var/log/mycron.log 2>&1
-
10
:表示分钟,这里是10分。 -
23
:表示小时,这里是23点。 -
*
:表示日期(1-31),这里的*
表示每天。 -
*
:表示月份(1-12),这里的*
表示每个月。 -
*
:表示星期几(0-7,其中0和7都表示周日),这里的*
表示每一天。 -
/data/sync_to_93.100.sh
:表示要执行的文件。 -
>> /var/log/mycron.log
:将标准输出追加到日志文件中。 -
2>&1
:将标准错误输出重定向到标准输出,从而一起追加到日志文件中。
这样配置都完成了,可以进行同步测试。