当前位置: 首页 > news >正文

rsync带账号密码

#!/bin/bash# 带自动密码输入的rsync同步脚本
# 注意:此脚本需要安装sshpass工具# 配置部分
SOURCE="/path/to/source"           # 源路径
REMOTE_USER="your_username"        # 远程服务器用户名
REMOTE_HOST="remote_host_or_ip"    # 远程服务器地址或IP
REMOTE_PATH="/path/to/destination" # 远程目标路径
PASSWORD="your_password"           # 远程服务器密码
LOG_FILE="/var/log/rsync_sync.log" # 日志文件路径
DRY_RUN=false                      # 测试模式# 检查必要工具是否安装
check_dependency() {if ! command -v "$1" &> /dev/null; thenecho "错误:$1 未安装,请先安装 $1 再运行脚本"exit 1fi
}# 检查依赖
check_dependency "rsync"
check_dependency "sshpass"# 检查源路径是否存在
if [ ! -e "$SOURCE" ]; thenecho "错误:源路径 $SOURCE 不存在!"exit 1
fi# 构建远程目标路径
DESTINATION="${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}"# rsync 选项
RSYNC_OPTIONS="-avhz --progress --delete"# 构建命令
COMMAND="sshpass -p \"${PASSWORD}\" rsync ${RSYNC_OPTIONS} \"${SOURCE}\" \"${DESTINATION}\""# 如果是测试模式,添加--dry-run选项
if [ "$DRY_RUN" = true ]; thenCOMMAND="$COMMAND --dry-run"echo "===== 测试模式 - 不会执行实际操作 =====" >> "$LOG_FILE"
fi# 记录日志
echo "===== 开始同步: $(date '+%Y-%m-%d %H:%M:%S') =====" >> "$LOG_FILE"
echo "源路径: $SOURCE" >> "$LOG_FILE"
echo "目标路径: $DESTINATION" >> "$LOG_FILE"
echo "执行命令: $COMMAND" >> "$LOG_FILE"# 执行同步命令
echo "开始同步文件到 $REMOTE_HOST ..."
eval $COMMAND# 检查执行结果
if [ $? -eq 0 ]; thenecho "同步成功完成!"echo "同步成功: $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE"
elseecho "同步失败!详情请查看日志文件: $LOG_FILE"echo "同步失败: $(date '+%Y-%m-%d %H:%M:%S')" >> "$LOG_FILE"exit 1
fiecho "===== 同步结束: $(date '+%Y-%m-%d %H:%M:%S') =====" >> "$LOG_FILE"
echo "" >> "$LOG_FILE"exit 0

1.首先安装必要的工具:

bash
# Debian/Ubuntu 系统
sudo apt-get install sshpass rsync# CentOS/RHEL 系统
sudo yum install sshpass rsync
  1. 配置脚本中的参数:

    • SOURCE:本地源文件 / 目录路径
    • REMOTE_USER:远程服务器用户名
    • REMOTE_HOST:远程服务器地址或 IP
    • REMOTE_PATH:远程服务器上的目标路径
    • PASSWORD:远程服务器的密码
http://www.dtcms.com/a/388917.html

相关文章:

  • rust语言项目实战:生成双色球、大乐透所有玩法的所有数字组合(逐行注释)
  • 远程配置服务器 ubuntu22.04 里的 docker 的x11
  • rust编写web服务03-错误处理与响应封装
  • Docker基础篇07:Docker容器数据卷
  • WPF 拖拽(Drag Drop)完全指南:从入门到精通
  • rust编写web服务05-数据库连接池
  • AppInventor2使用本地SQLite实现用户注册登录功能
  • Prompt(提示词工程)优化
  • Ubuntu 系统安装 PostgreSQL 17.6
  • Kotlin-基础语法练习四
  • 开源的消逝与新生:从 TensorFlow 的落幕到开源生态的蜕
  • 原创GIS FOR Unity3d PAD VR LINUXPC 同时支持。非cesium
  • Kotlin中协程的管理
  • django如何自己写一个登录时效验证中间件
  • 【大前端++】初始技术栈跨平台方案Electron+Vue,MacOS开发环境搭建【十分钟一个Demo】
  • 限时起售价17.38万元,吉利银河M9上市
  • Vue : defineModel()
  • 一套基于Java+Vue+UniApp开发的同城配送系统
  • Vue 3 手机外观组件库
  • 部署分布式CephFS,存储的服务器的最低配置
  • 【Spring AI】Ollama大模型-智能对话实现+项目实战(Spring Boot + Vue)
  • Vue 3 实战:GIS 系统模块化设计与多功能融合方案
  • Docker多容器编排:Compose 实战教程——从入门到精通
  • Vue2 基础知识点一:数据绑定 (Data Binding)
  • layui tree组件回显bug问题,父级元素选中导致子集全部选中
  • centos7上使用Docker+ RagFlow + ollama + 数据集 搭建自己的AI问答机器人(2025-09)
  • # 从 Gymnasium 到 Minari:新一代机器人强化学习工具链全指南
  • 系统架构设计师备考第27天——基于构件的软件工程
  • Centos下安装docker
  • OpenAPI 规范:构建高效 RESTful API 指南