Orange的运维学习日记–20.Linux文件传递与自动同步

Linux 与 Windows 系统间文件传输方法

Xftp 工具

Xftp 是一款图形化的 SFTP/FTP 客户端,通过拖拽或右键菜单即可在 Windows 和 Linux 服务器之间传输文件

请添加图片描述

Xshell 配合 lrzsz

在 Linux 服务器端安装 lrzsz 软件包后,可利用 rzsz 命令在 Xshell 窗口中进行文件上传和下载

[root@centos7 ~]# yum install -y lrzsz
  • 上传文件
    直接将本地文件拖拽到 Xshell 窗口
    或者执行 rz 并在弹出对话框中选择待上传文件
  • 下载文件
    执行 sz 文件名,并在提示中指定保存路径

scp 命令

scp(secure copy)基于 SSH 协议实现文件安全复制,要求目标服务器开启 SSH 服务

基本用法

scp 用户@远程主机:远程路径 本地路径

示例:从服务器拉取单个文件到当前目录

scp root@server:/root/etc-20240726.tar .

复制多个文件

利用大括号语法一次拉取多个指定文件

scp root@server:/root/{etc-20240726.tar,etc.tar} .

复制目录

使用 -r 参数递归复制目录

scp -r root@server:/etc/selinux/ .

上传文件

若目标路径省略,则默认上传到远程用户家目录

scp etc.tar root@server:
scp etc.tar etc-20240726.tar root@server:
scp -r selinux/ root@server:

常用选项

  • -P 端口号 指定非默认端口
  • -C 启用传输压缩
  • -p 保留文件修改时间和权限

scp 缺点

  • 每次传输均为全量复制,无法实现增量同步
  • 无法自动比对并跳过未变化的文件

rsync 命令

rsync(Remote Synchronize)是一款高效的远程数据同步与备份工具,支持增量传输与多种平台

安装

[root@centos7 ~]# yum install -y rsync

shell 模式

基于 SSH 协议进行传输,默认通过端口 22 通信

语法
rsync [OPTION]… SRC DEST
rsync [OPTION]… SRC [USER@]HOST:DEST
rsync [OPTION]… [USER@]HOST:SRC DEST
常用选项
  • -n 空运行,仅显示将要执行的操作
  • -v 输出详细信息
  • -a 归档模式,相当于启用 -r -l -p -t -g -o -D
  • -z 传输时启用压缩
  • -P 等同于 --partial --progress,显示进度并保留部分传输文件
  • --delete 删除目标端多余文件
  • -e ssh 指定远程 shell 程序和端口
使用示例

准备待同步目录

mkdir Pictures
touch Pictures/snap{1..5}.jpg

首次全量同步

rsync -azv Pictures root@server:~/Pictures

再次同步仅传输变化文件

rsync -azv Pictures root@server:~/Pictures

更新部分文件后同步

touch Pictures/snap{1,2}.jpg
rsync -azv Pictures root@server:~/Pictures

启用 --delete 删除目标端已删除的文件

rsync -azv --delete Pictures root@server:~/Pictures
同步注意事项
  • 文件访问时间、权限或内容变化均视为文件更新
  • 目标文件比源文件更新则不被覆盖
  • 源路径末尾是否带斜杠决定复制目录本身或仅目录内容

daemon 模式

不依赖 SSH 服务,通过 rsync 自身守护进程传输

语法
rsync [OPTION]… SRC [USER@]HOST::DEST
rsync [OPTION]… [USER@]HOST::SRC DEST
rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]
配置要点
  • 在服务端编辑 /etc/rsyncd.conf,定义模块、路径、权限和认证方式
  • 启动 rsync 守护进程,并允许客户端连接指定模块

自动化增量同步:rsync 与 sersync 结合使用

下载解压与安装

  • 下载 sersync 二进制包并解压

    tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
    
  • 将解压后的目录移动并重命名

    mv GNU-Linux-x86 /usr/local/sersync
    

配置 XML 同步任务

  1. 进入安装目录并备份原始配置

    cd /usr/local/sersync
    cp confxml.xml confxml.xml-bak
    vi confxml.xml
    
  2. <localpath>
    

    中设定监控目录,并添加

    <remote>
    

    节点指向 rsync 目标模块

    <sersync>
      <localpath watch="/example">
        <remote ip="x.x.x.x" name="backup"/>
      </localpath>
      <rsync>
        <commonParams params="-artuz"/>
        <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
        <userDefinedPort start="false" port="874"/>
        <timeout start="false" time="100"/>
        <ssh start="false"/>
      </rsync>
      <failLog path="/var/log/rsync_fail_log.sh" timeToExecute="60"/>
    </sersync>
    
  3. 核对 /etc/rsyncd.conf 中的模块名称和认证用户,确保 <remote><auth> 配置一致

  4. 注意 truefalse 拼写准确,否则 sersync 进程会卡死

启动守护进程并测试

  • 使用以下命令启动 sersync 守护进程,并在启动前先执行一次全量同步

    /usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml
    
  • 参数说明

    • -d 启用守护模式
    • -r 启动前执行一次全量 rsync
    • -n 指定守护线程数量(默认为 10)
    • -o 指定配置文件路径
  • 测试同步

    /example
    

    目录创建文件

    touch /example/{1..6}.txt
    

    登录备份服务器,查看

    /backup/web
    

    是否已同步文件

环境变量与开机自启

  • 将 sersync 可执行程序加入系统 PATH

    echo "PATH=\$PATH:/usr/local/sersync" >> /etc/profile
    source /etc/profile
    
  • 验证可直接运行命令

    sersync2 -d -r -o /usr/local/sersync/confxml.xml
    
  • 添加开机启动命令到

    /etc/rc.local
    

    并赋予执行权限

    echo '/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml' >> /etc/rc.local
    chmod +x /etc/rc.local
    

多实例并行部署

  • 针对不同同步任务复制多份配置文件

    www_confxml.xml  
    bbs_confxml.xml  
    blog_confxml.xml
    
  • 分别启动对应配置的守护进程

    /usr/local/sersync/sersync2 -d -o /usr/local/sersync/www_confxml.xml
    /usr/local/sersync/sersync2 -d -o /usr/local/sersync/bbs_confxml.xml
    /usr/local/sersync/sersync2 -d -o /usr/local/sersync/blog_confxml.xml
    
Logo

一站式 AI 云服务平台

更多推荐