Linux:合并来自不同服务器的文件



我有3个Linux服务器,在每个服务器上我有一个文件夹,里面有几个文件。从其中一个服务器,我需要访问当前服务器文件夹中的文件和其他2个服务器文件夹中的文件,并将它们连接起来。

我能够在单个Linux服务器的一个文件夹或子文件夹中连接两个或多个文件。需要帮助才能跨服务器执行相同的操作。

,是:从3台服务器输入文件:server1/folder1/file1;server2/folder1/file1;server3/folder1/file1;

输出文件:server1/folder1/file1(包含3个服务器的内容)

同样,我需要对同一文件夹内的file2, file3等执行此操作。

是否可以使用ssh和cat编写相同的shell脚本?

我是这么想的。Nonindempotent:
如果运行两次,将相应地增大当前文件。

您需要ssh-key pairssh-agent运行。

#!/usr/bin/env bash
set -eox pipefail
servers=( server{1..3} )
files=( folder1/file{1..3} )
for file in "${files[@]}"; do
for server in "${servers[@]}"; do
ssh "$server cat $file" >> "$file"
done
done

回答教你良好的bash编码习惯。
我们在那里看到了这么多无聊的破碎的RealLife©®™shell脚本。

正确引用是shell脚本的关键之一。

学习如何在shell中正确地引用,这是非常重要的:

"双quote"每个包含空格/元字符的字面值和每个展开:"$var","$(command "$var")","${array[@]}","a & b"。使用'single quotes'作为代码或文字$'s: 'Costs $5 US',ssh host 'echo "$HOSTNAME"'。参见
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words

最新更新