以下是基于 Ubuntu 22.04 系统和 Vi 编辑器,使用密码进行 rsync 上传下载的逐步配置文档,包含脚本内容,方便备忘.
目标:
步骤 1: 服务端配置 (远程服务器)
安装 rsync:
sudo apt update
sudo apt install rsync
创建 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 编辑器。创建密码文件:
使用 Vi 编辑器创建 /etc/rsyncd.secrets 文件:
sudo vi /etc/rsyncd.secrets
添加用户名和密码,格式为 username:password。 例如:
your_username:your_password
Vi 编辑器操作: (同上)
设置密码文件权限:
sudo chmod 600 /etc/rsyncd.secrets
sudo chown root:root /etc/rsyncd.secrets
启动 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)
安装 rsync:
sudo apt update
sudo apt install rsync
创建密码文件:
使用 Vi 编辑器创建 ~/.rsync.secrets 文件:
vi ~/.rsync.secrets
添加密码:
your_password
Vi 编辑器操作: (同上)
设置密码文件权限:
chmod 600 ~/.rsync.secrets
步骤 3: 创建 rsync 上传/下载脚本 (Ubuntu 22.04)
创建脚本文件:
使用 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 编辑器操作: (同上)
使脚本可执行:
chmod +x rsync_script.sh
步骤 4: 使用脚本
上传:
./rsync_script.sh put
下载:
./rsync_script.sh get
注意事项:
your_module_name, /path/to/your/data, your_username, your_password, dev.hostcache.com, code, modperl_backup, ops 等示例值替换为你自己的实际值。i: 进入插入模式Esc: 退出插入模式:w: 保存文件:q: 退出 Vi 编辑器:wq: 保存并退出 Vi 编辑器这个文档提供了详细的步骤,可以帮助你配置基于密码的 rsync 上传下载。 记住要重视安全性,并考虑使用 SSH 密钥进行身份验证。