GNU/Linux >> Znalost Linux >  >> Linux

Jak načíst více souborů ze vzdáleného počítače na místní pomocí Ansible

Řešení 1:

K tomu byste měli použít modul synchronizace. To využívá úžasnou sílu rsync. Zkopíruje struktury souborů a adresářů libovolné hloubky, je neprůstřelný a vysoce účinný – kopíruje pouze skutečné bajty, které se změnily:

- name: Fetch stuff from the remote and save to local
  synchronize:  src={{ item }} dest=/tmp/ mode=pull
  with_items:
    - "folder/one"
    - "folder/two"

Klíč je mode parametr:

Určete směr synchronizace. V režimu push je zdrojem localhost nebo delegát; V režimu pull je vzdálený hostitel v kontextu zdrojem.

Řešení 2:

Pravděpodobně budete muset zaregistrovat vzdálený obsah a poté přes něj smyčkovat, něco takového by mělo fungovat:

- shell: (cd /remote; find . -maxdepth 1 -type f) | cut -d'/' -f2
  register: files_to_copy

- fetch: src=/remote/{{ item }} dest=/local/
  with_items: "{{ files_to_copy.stdout_lines }}"

kde /remote by měl být změněn s cestou k adresáři na vašem vzdáleném serveru a /local/ s adresářem na vašem master

Řešení 3:

Nemám dost zástupců na to, abych se vyjádřil, jinak bych to přidal.

Použil jsem to, co napsal Kęstutis. musel jsem provést mírnou úpravu

- shell: (cd /remote; find . -maxdepth 1 -type f) | cut -d'/' -f2
  register: files_to_copy

- fetch: src=/remote/{{ item }} dest=/local/
  with_items: "{{ files_to_copy.stdout_lines }}"

With_items byla oblast, kterou jsem musel změnit. jinak nebyl schopen najít soubory.

Řešení 4:

Oprava výše uvedeného příkladu

- hosts: srv-test
  tasks:
    - find: paths="/var/tmp/collect" recurse=no patterns="*.tar"
      register: files_to_copy
    - fetch: src={{ item.path }} dest=/tmp
      with_items: "{{ files_to_copy.files }}"

Řešení 5:

dobře, pokud používáte nejnovější ansible verzi, jako je 2.9.9, myslím, že potřebujeme uvozovky k položce

- name: use find to get the files list which you want to copy/fetch
  find: 
    paths: /etc/
    patterns: ".*passwd$"
    use_regex: True   
  register: file_2_fetch

- name: use fetch to get the files
  fetch:
    src: "{{ item.path }}"
    dest: /tmp/
    flat: yes
  with_items: "{{ file_2_fetch.files }}"

Linux
  1. Jak přenášet soubory v Linuxu pomocí SCP a Rsync

  2. Jak přejmenovat více souborů z jedné přípony na druhou v Linuxu / Unixu?

  3. Jak používat rsync z Windows PC na vzdálený Linux server?

  1. Ventoy:Jak vytvořit multiboot USB disk s více ISO soubory

  2. Jak přenášet soubory mezi místními a vzdálenými počítači pomocí protokolu SFTP

  3. Jak nahrát více souborů na FTP ze serveru Linux?

  1. Příkaz SCP Linux – Jak přenášet soubory SSH ze vzdáleného do místního

  2. Jak komprimovat více souborů v systému Linux

  3. Jak zkopírovat soubor ze vzdáleného serveru do místního počítače?