gpt4 book ai didi

bash - 有没有办法让 rsync 在开始传输之前执行命令

转载 作者:行者123 更新时间:2023-11-29 09:12:01 25 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本将用于从远程位置传输文件(使用 rsync),然后对检索到的内容执行一些基本操作。

当我最初连接到远程位置时(没有运行 rsync 守护进程,我只是使用 rsync 来检索文件)我被放置在一个非标准的 shell 中。为了进入 bash shell,我需要输入“run util bash”。有没有办法在 rsync 开始传输文件之前执行“run util bash”?

如果有办法使用 scp/ftp 而不是 rsync 来做到这一点,我愿意接受其他建议。

最佳答案

一种方法是从服务器而不是客户端执行 rsync。 ssh 反向隧道允许我们从远程服务器临时访问本地机器。

  1. 假设本地机器在端口 22 上有一个 ssh 服务器
  2. 在指定 reverse 的同时向远程主机发出嘘声将远程机器中的端口(在此示例中让我们使用 2222)映射到本地机器中的端口 22 的隧道
  3. 执行您的 rsync 命令,用反向 ssh 隧道地址替换对本地计算机的任何引用:my-local-user@localhost
  4. 为 rsync 的 ssh 添加一个端口选项,让它使用 2222 端口。

命令:

ssh -R 2222:localhost:22 remoteuser@remotemachine << EOF

# we are on the remote server.
# we can ssh back into the box running the ssh client via ${REMOTE_PORT}
run utils bash
rsync -e "ssh -p 2222" --args /path/to/remote/source remoteuser@localhost:/path/to/local/machine/dest
EOF

给ssh传递复杂命令的引用: What is the cleanest way to ssh and run multiple commands in Bash?

关于bash - 有没有办法让 rsync 在开始传输之前执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23851127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com