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

如何用Shell脚本将一台Linux服务器的filea.txt内容写入另一台的fileb.txt

解决方案

核心思路是通过SSH管道传输文件内容到目标服务器执行追加操作,根据源文件存放位置不同可以选择对应方案:

方案1:源文件filea.txt存放在本地执行脚本的服务器

直接执行以下命令即可实现本地内容追加到远程服务器的fileb.txt:

cat /path/to/local/filea.txt | ssh 远程用户名@远程服务器IP "cat >> /path/to/remote/fileb.txt"

方案2:源文件filea.txt存放在其他源服务器

找一台可以同时连通源服务器和目标服务器的机器执行以下命令,实现跨服务器内容追加:

ssh 源服务器用户名@源服务器IP "cat /path/to/source/filea.txt" | ssh 目标服务器用户名@目标服务器IP "cat >> /path/to/target/fileb.txt"

可选优化方案(适合大文件)

如果文件体积较大,推荐用rsync的追加模式,支持断点续传,传输效率更高:

rsync --append /path/to/local/filea.txt 远程用户名@远程服务器IP:/path/to/remote/fileb.txt

注意事项
  • 提前配置SSH免密登录,避免脚本执行时卡住等待密码输入:本地执行ssh-keygen生成密钥后,用ssh-copy-id 远程用户名@远程服务器IP把公钥推送到目标服务器即可
  • 所有文件路径建议写绝对路径,避免SSH登录默认工作目录和预期不一致导致的文件找不到、写错位问题
  • 管道传输方式天然规避了文件内容包含特殊Shell字符的问题,内容通过标准输入流传递,不会被目标端Shell解析转义

可直接使用的脚本示例
#!/bin/bash
# 自定义配置项
SOURCE_FILE="/data/filea.txt"
REMOTE_USER="root"
REMOTE_HOST="192.168.1.100"
REMOTE_TARGET_FILE="/data/fileb.txt"

# 源文件存在性校验
if [ ! -f "${SOURCE_FILE}" ]; then
    echo "ERROR: 源文件${SOURCE_FILE}不存在"
    exit 1
fi

# 远程服务器连通性校验
ssh -q -o ConnectTimeout=5 "${REMOTE_USER}@${REMOTE_HOST}" exit
if [ $? -ne 0 ]; then
    echo "ERROR: 无法连接到远程服务器${REMOTE_HOST}"
    exit 1
fi

# 执行内容追加
cat "${SOURCE_FILE}" | ssh "${REMOTE_USER}@${REMOTE_HOST}" "cat >> ${REMOTE_TARGET_FILE}"

# 执行结果判断
if [ $? -eq 0 ]; then
    echo "SUCCESS: 内容已成功追加到远程文件"
else
    echo "ERROR: 内容追加失败"
    exit 1
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 07:45:03