You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写Bash脚本:迁移指定前缀文件至远程服务器并删除源文件

Bash脚本实现指定前缀文件跨服务器迁移(保留目录结构+删除源文件)

核心方案推荐:使用rsync(高效简洁)

rsync是处理文件同步/迁移的首选工具,它支持递归遍历目录、自动创建目标路径,并且可以直接在传输完成后删除源文件,完美匹配你的需求。

执行命令(直接在Server1上运行)

rsync -av \
  --include='*/' \          # 包含所有子目录(保证目录结构完整)
  --include='a*' \          # 只保留前缀为a的文件
  --exclude='*' \           # 排除其他所有文件
  /dummy/ \                 # 源目录末尾加/表示传输目录内的内容,而非目录本身
  user@Server2:/demo/ \     # 替换为实际的Server2用户名和地址
  --remove-source-files     # 传输成功后删除Server1上的源文件

参数解释

  • -a:归档模式,保留文件权限、时间戳等属性,同时递归遍历目录
  • -v:verbose模式,显示传输过程(可选,调试时开启)
  • --include='*/':必须先包含所有子目录,否则rsync会跳过无匹配文件的目录,导致目录结构丢失
  • --include='a*':筛选前缀为a的文件
  • --exclude='*':排除其他未匹配的文件
  • --remove-source-files:仅在文件成功传输后删除Server1上的源文件(不会删除空目录,若需清理空目录可后续执行find /dummy -type d -empty -delete)

备选方案:使用find+scp(逻辑直观,适合新手理解)

如果对rsync的筛选规则不太熟悉,可以用find遍历文件,再逐个用scp传输,手动处理目录结构和删除操作。

脚本示例

#!/bin/bash
# 配置参数
SOURCE_ROOT="/dummy"
DEST_ROOT="/demo"
REMOTE_USER="user"          # Server2的用户名
REMOTE_HOST="Server2"       # Server2的IP或主机名

# 遍历所有前缀为a的文件
find "$SOURCE_ROOT" -type f -name "a*" | while read -r src_file; do
    # 计算文件相对于源根目录的路径
    rel_path="${src_file#$SOURCE_ROOT/}"
    # 远程目标目录
    dest_dir="$DEST_ROOT/$(dirname "$rel_path")"
    # 远程目标文件路径
    dest_file="$REMOTE_USER@$REMOTE_HOST:$dest_dir/$(basename "$rel_path")"

    # 在远程服务器创建目标目录(-p参数自动创建多级目录)
    ssh "$REMOTE_USER@$REMOTE_HOST" "mkdir -p '$dest_dir'"
    
    # 传输文件
    scp "$src_file" "$dest_file"
    
    # 检查传输是否成功,成功则删除源文件
    if [ $? -eq 0 ]; then
        rm "$src_file"
        echo "已删除源文件: $src_file"
    else
        echo "传输失败,保留源文件: $src_file"
    fi
done

# 可选:删除Server1上遗留的空目录
find "$SOURCE_ROOT" -type d -empty -delete

关键注意事项

  1. SSH免密登录配置:确保Server1可以无密码登录到Server2,否则脚本执行过程中会反复要求输入密码。可通过ssh-keygen生成密钥,再用ssh-copy-id user@Server2完成配置。
  2. 测试验证:正式执行前,建议去掉--remove-source-files(rsync方案)或注释rm "$src_file"(scp方案),先验证传输后的目录结构和文件是否符合预期,再启用删除操作。
  3. 权限问题:确保Server1上的执行用户对/dummy目录有读取权限,Server2上的用户对/demo目录有写入权限。

内容的提问来源于stack exchange,提问作者Siddharth Gandhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:11:16