以下是基于 Ubuntu 22.04 系统和 Vi 编辑器,使用密码进行 rsync 上传下载的逐步配置文档,包含脚本内容,方便备忘.

目标:

步骤 1: 服务端配置 (远程服务器)

  1. 安装 rsync:

    sudo apt update
    sudo apt install rsync
    
    
  2. 创建 rsync 配置文件:

    使用 Vi 编辑器创建 /etc/rsyncd.conf 文件:

    sudo vi /etc/rsyncd.conf
    
    

    添加以下内容,并根据你的需求进行修改:

    uid = nobody
    gid = nobody
    use chroot = no
    max connections = 10
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    
    [your_module_name]  # 模块名称
    path = /path/to/your/data  # 要同步的目录
    comment = Your Module Description
    read only = no  # 允许写入
    list = yes
    auth users = your_username  # 允许连接的用户名
    secrets file = /etc/rsyncd.secrets  # 密码文件路径
    
    
    • your_module_name: 这是你为同步目录定义的名称。客户端需要使用这个名称来连接。
    • /path/to/your/data: 这是你想要同步的实际目录。
    • your_username: 这是允许连接到 rsync 服务的用户名。
    • /etc/rsyncd.secrets: 这是存储用户名和密码的文件。

    Vi 编辑器操作:

    • 按下 i 键进入插入模式。
    • 输入或粘贴配置内容。
    • 按下 Esc 键退出插入模式。
    • 输入 :wq 并按下 Enter 键保存并退出 Vi 编辑器。
  3. 创建密码文件:

    使用 Vi 编辑器创建 /etc/rsyncd.secrets 文件:

    sudo vi /etc/rsyncd.secrets
    
    

    添加用户名和密码,格式为 username:password。 例如:

    your_username:your_password
    
    

    Vi 编辑器操作: (同上)

  4. 设置密码文件权限:

    sudo chmod 600 /etc/rsyncd.secrets
    sudo chown root:root /etc/rsyncd.secrets
    
    
  5. 启动 rsync 服务:

    sudo rsync --daemon --config=/etc/rsyncd.conf
    
    

    为了让 rsync 服务在系统启动时自动启动,你需要创建一个 systemd 服务文件。

    使用 Vi 编辑器创建 /etc/systemd/system/rsyncd.service 文件:

    sudo vi /etc/systemd/system/rsyncd.service
    
    

    添加以下内容:

    [Unit]
    Description=Rsync Daemon
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
    User=root
    Group=root
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
    

    Vi 编辑器操作: (同上)

    启用并启动 rsync 服务:

    sudo systemctl enable rsyncd.service
    sudo systemctl start rsyncd.service
    
    

步骤 2: 客户端配置 (Ubuntu 22.04)

  1. 安装 rsync:

    sudo apt update
    sudo apt install rsync
    
    
  2. 创建密码文件:

    使用 Vi 编辑器创建 ~/.rsync.secrets 文件:

    vi ~/.rsync.secrets
    
    

    添加密码:

    your_password
    
    

    Vi 编辑器操作: (同上)

  3. 设置密码文件权限:

    chmod 600 ~/.rsync.secrets
    
    

步骤 3: 创建 rsync 上传/下载脚本 (Ubuntu 22.04)

  1. 创建脚本文件:

    使用 Vi 编辑器创建 rsync_script.sh 文件:

    vi rsync_script.sh
    
    

    添加以下内容,并根据你的需求进行修改:

    #!/bin/bash
    
    ARG=$1
    
    if [ -z "$ARG" ]; then
      echo "Usage: $0 put|get"
      exit 1
    fi
    
    # 定义远程服务器、模块和本地备份目录
    REMOTE_HOST="dev.hostcache.com"
    REMOTE_MODULE="code"
    REMOTE_DIR="modperl_backup" # 远程备份目录
    LOCAL_BACKUP_DIR="$HOME/code_backup" # 本地备份目录
    PASSWORD_FILE="$HOME/.rsync.secrets" # 使用绝对路径
    
    if [ "$ARG" == "put" ]; then
      # 上传 /etc/apache2/modperl 到远程服务器
      rsync -az --delete --password-file="$PASSWORD_FILE" /etc/apache2/modperl/ "ops@${REMOTE_HOST}::${REMOTE_MODULE}/${REMOTE_DIR}"
      if [ $? -ne 0 ]; then
        echo "Error: rsync put failed"
        exit 1
      fi
      echo "Successfully uploaded /etc/apache2/modperl to ${REMOTE_HOST}::${REMOTE_MODULE}/${REMOTE_DIR}"
    
    elif [ "$ARG" == "get" ]; then
      # 下载远程服务器上的备份到本地
      mkdir -p "$LOCAL_BACKUP_DIR" # 确保本地备份目录存在
      rsync -az --delete --password-file="$PASSWORD_FILE" "ops@${REMOTE_HOST}::${REMOTE_MODULE}/${REMOTE_DIR}" "$LOCAL_BACKUP_DIR"
      if [ $? -ne 0 ]; then
        echo "Error: rsync get failed"
        exit 1
      fi
      echo "Successfully downloaded ${REMOTE_HOST}::${REMOTE_MODULE}/${REMOTE_DIR} to $LOCAL_BACKUP_DIR"
    
    else
      echo "Usage: $0 put|get"
      exit 1
    fi
    
    exit 0
    
    

    Vi 编辑器操作: (同上)

  2. 使脚本可执行:

    chmod +x rsync_script.sh
    
    

步骤 4: 使用脚本

  1. 上传:

    ./rsync_script.sh put
    
    
  2. 下载:

    ./rsync_script.sh get
    
    

注意事项:

这个文档提供了详细的步骤,可以帮助你配置基于密码的 rsync 上传下载。 记住要重视安全性,并考虑使用 SSH 密钥进行身份验证。