liunx服务器远程备份文件

天远科技  发表于:2025-08-03  分类:操作系统相关  阅读(127)  赞同1

我们定期的将一些日志文件汇总查看问题,我们可以采用RSync + SSH Key + Cron 方案

第一步解决服务器之间SSH免密登录


    yle="color:#404040;font-family:quote-cjk-patch, Inter, system-ui, -apple-system, "font-size:16.002px;background-color:#FFFFFF;">
  • yle="font-weight:600;">备份服务器

    • IP: 192.168.0.200

    • 接收账户: myuser

    • 接收目录: /data/bakdata

  • yle="font-weight:600;">发送服务器A

    • 本地用户名: user

    • 文件路径: /home/user/abc.txt



yle="color:#A0A1A7;font-style:italic;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"># 在备份服务器上操作yle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> 

yle="color:#4078F2;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;">sudoyle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> yle="color:#4078F2;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;">useraddyle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> yle="color:#4078F2;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;">-myle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> myuser yle="color:#A0A1A7;font-style:italic;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"># 创建账户yle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> 

yle="color:#4078F2;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;">sudoyle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> yle="color:#4078F2;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;">mkdiryle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> yle="color:#4078F2;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;">-pyle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> /data/bakdata

yle="color:#4078F2;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;">sudoyle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> yle="color:#4078F2;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;">chownyle="color:#494949;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"> myuser:myuser /data/bakdata yle="color:#A0A1A7;font-style:italic;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"># 设置权限



yle="color:#A0A1A7;font-style:italic;"># 在发送服务器上操作
ssh-keygen yle="font-family:"color:#4078F2;">-tyle="font-family:""> rsa yle="font-family:"color:#4078F2;">-fyle="font-family:""> ~/.ssh/id_rsa yle="font-family:"color:#4078F2;">-Nyle="font-family:""> yle="font-family:"color:#50A14F;">""yle="font-family:""> #生成SSH密钥(如果尚未生成)
yle="font-family:"">ssh-copy-id yle="font-family:"color:#4078F2;">-iyle="font-family:""> ~/.ssh/id_rsa.pub central_user@192.168.0.200 yle="font-family:""># 将公钥复制到备份服务器的 myuser 账户中
yle="font-family:"color:#4078F2;">sshyle="font-family:""> myuser@192.168.0.200 yle="font-family:"color:#A0A1A7;font-style:italic;">#测试免密登录yle="font-family:"color:#A0A1A7;font-style:italic;">yle="font-family:"color:#A0A1A7;font-style:italic;">应直接登录,无需密码

yle="color:#A0A1A7;font-style:italic;"># 在发送服务器上操作创建一个脚本文件用来将文件发送给备份服务器,创建文件bak.sh,文件如下
vi /home/user/bak.sh
yle="color:#E45649;">#!/bin/bash yle="color:#A0A1A7;font-style:italic;"># 参数:中央服务器IP、用户名、本地文件路径 
yle="color:#4078F2;">CENTRAL_SERVERyle="color:#4078F2;">=yle="color:#50A14F;">"myuser@192.168.0.200" 
yle="color:#4078F2;">LOCAL_FILEyle="color:#4078F2;">=yle="color:#50A14F;">"/home/user/abc.txt" 
yle="color:#4078F2;">REMOTE_DIRyle="color:#4078F2;">=yle="color:#50A14F;">"/data/bakdata/yle="color:#4078F2;">$(hostname)" yle="color:#A0A1A7;font-style:italic;"># 按主机名分目录 yle="color:#A0A1A7;font-style:italic;"># 使用rsync同步(-z压缩,-v输出日志,-a归档模式) 
yle="color:#4078F2;">rsync yle="color:#4078F2;">-azv yle="color:#4078F2;">-e yle="color:#4078F2;">ssh yle="color:#50A14F;">"yle="color:#4078F2;">$LOCAL_FILE" yle="color:#50A14F;">"yle="color:#4078F2;">$CENTRAL_SERVER:yle="color:#4078F2;">$REMOTE_DIR/" 
yle="color:#A0A1A7;font-style:italic;"># 可选:添加时间戳重命名 
yle="color:#4078F2;">REMOTE_FILEyle="color:#4078F2;">=yle="color:#50A14F;">"yle="color:#4078F2;">${REMOTE_DIR}/file_yle="color:#4078F2;">$(date +yle="color:#383A42;">\%Yyle="color:#383A42;">\%myle="color:#383A42;">\%d).log" 
yle="color:#4078F2;">ssh yle="color:#50A14F;">"yle="color:#4078F2;">$CENTRAL_SERVER" yle="color:#50A14F;">"cp yle="color:#4078F2;">${REMOTE_DIR}/yle="color:#4078F2;">$(basename $LOCAL_FILE) yle="color:#4078F2;">$REMOTE_FILE"
yle="color:#50A14F;"> 
注意保存完后加上执行权限  chmod +x /home/user/abc.txt
 
yle="color:#A0A1A7;font-style:italic;font-family:Menlo, "font-size:12.573px;background-color:#FAFAFA;"># 在备份服务器上操作,做个定时任务删除一个月以前的备份文件
crontab -e 
yle="color:#B76B01;">0 0 * * * yle="color:#4078F2;">find /data/bakdata/ yle="color:#4078F2;">-type f yle="color:#4078F2;">-mtime +30 yle="color:#4078F2;">-delete

yle="color:#50A14F;"> 
yle="color:#50A14F;"> 
yle="font-family:"color:#A0A1A7;font-style:italic;"> 



线

在线联系
点击这里给我发消息
点击这里给我发消息
关注我们