将许多文件收集到某个位置的最佳命令是什么?

将许多文件收集到某个位置的最佳命令是什么?

我有很多文件需要合并为一个。是否有一个命令可以用来将不同服务器上的所有主机文件收集到一个位置。

答案1

好吧,如果您有一个服务器列表,与 ssh 具有相同的用户,您可以执行一个简单的脚本,例如:

#!/bin/bash
for i in `more my_servers.txt`
do
 scp $i:/etc/sudoers $i-sudoers
done

但是,默认权限是/etc/sudoers400,这意味着只有root可以读取它。

接下来我建议的,也是我推荐的,是像 Ansible 这样的工具。它通过 ssh 运行,通过一个简单的剧本,您就可以收集您想要的所有文件。要求:

  • 安装ansible
  • 设置清单文件,其中列出您的服务器
  • 拥有 ssh 访问权限和 sudo 帐户(因为 sudoers 的权限为 400)

然后您将使用该fetch模块,如下所示:

---
- hosts: all
  remote_user: yoursshuser
  tasks:

    - name: fetch 
      fetch:
        src: /etc/sudoers
        dest: /tmp/{{ inventory_hostname }}-sudoers
      become: yes

用于ansible-playbook playbook.yml -i yourinventoryfile运行剧本。

就是这样。

相关内容