在源和目标中使用相同的目录/文件进行 scp 的快捷方式

在源和目标中使用相同的目录/文件进行 scp 的快捷方式

我经常将文件从开发环境更新到不同服务器中的生产环境,因此两台主机中的路径相同,并且更新文件并指示参数的相同路径成为一种重复过程scp

有没有办法使用大括号扩展或其他带有scp参数的技术?我知道其中之一,出发地或目的地必须user@host:在开头包含 。

我想做的是:

scp user@{dev-server,production-server}:/path/to/file

答案1

我提出了两种并非全部使用 scp 的解决方案:

1. 使用.ssh/配置帮助

即:将类似的内容放入您的 .ssh/config 中

Host p
HostName production.domain.com
Host d
HostName development.domain.com

然后你可以缩短你的 scp 命令:

scp user@d:/path user@p:/path

2.使用git等源代码管理软件。因此,当您完成调试和编码等工作后,您可以执行以下操作(简化):

git add /path/to/my_file
git commit -m "new version and features done"
git push production master

(只需设置你的 git 使用 ssh)

3.使用qscp或quick-scp - 专门为您的方便而设计的bash脚本:) https://github.com/zladuric/quick-scp 基本上,获取 qscp 文件并使其可执行。 (并将默认值更改为您的环境)。

它将采用一个强制参数和两个可选参数。例子:

./qscp file     # it will use defaults
./qscp path/to/dir  dest.server.com # uses default source, but to other dest
./qscp /abs/path/to/file dest.srv.com src.srv.com # takes both dest and source server args

该脚本应该很容易根据您的特定需求进行定制,但它还不是非常强大。您可能需要调整 scp 二进制文件、ssh_key 文件或类似文件的位置。

他们的苹果怎么样? :)

答案2

我认为最好为每次执行的命令添加别名,以减少输入。

.bashrc在用户的文件中添加命令:

alias tx='scp user@{dev-server,production-server}:/path/to/file'

这将有助于减少键入整个命令时可能发生的键入错误。

但我认为你这样做的方式根本不正确。正如 zladuric 在第二种方式中所说的那样,您应该使用某种版本控制系统来维护代码数据库。这将允许您恢复到任何以前的版本。

相关内容