GNU/Linux >> Linux Esercitazione >  >> Linux

Come recuperare più file da una macchina remota a una locale con Ansible

Soluzione 1:

Dovresti usare il modulo di sincronizzazione per fare questo. Questo utilizza il fantastico potere di rsync. Copierà strutture di file e directory di qualsiasi profondità, è a prova di proiettile e altamente efficiente - copia solo i byte effettivi che sono cambiati:

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

La chiave è la mode parametro:

Specificare la direzione della sincronizzazione. In modalità push il localhost o delegato è l'origine; In modalità pull l'host remoto nel contesto è l'origine.

Soluzione 2:

Probabilmente dovrai registrare il contenuto remoto e poi ripassarlo, qualcosa del genere dovrebbe funzionare:

- 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 }}"

dove /remote dovrebbe essere cambiato con il percorso della directory sul tuo server remoto e /local/ con la directory sul tuo master

Soluzione 3:

non ho abbastanza rappresentante per commentare altrimenti lo aggiungerei.

Ho usato ciò che ha pubblicato Kęstutis. ho dovuto apportare una piccola modifica

- 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 }}"

Il with_items era l'area che dovevo cambiare. altrimenti non è stato in grado di individuare i file.

Soluzione 4:

Correggere l'esempio precedente

- 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 }}"

Soluzione 5:

beh, se stai usando l'ultima versione di ansible, come la 2.9.9, penso che abbiamo bisogno di virgolette per l'articolo

- 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. Come trasferire file in Linux con SCP e Rsync

  2. Come crittografare i file di archiviazione cloud con Rclone

  3. Come rinominare più file da un'estensione all'altra in Linux / Unix?

  4. Come tornare a scp in locale quando sono già passato a una macchina remota?

  5. Come utilizzare rsync dal PC Windows al server Linux remoto?

Linux:come condividere file su una rete locale con woof

Come condividere in modo sicuro i file dalla riga di comando con ffsend in Linux

Come scaricare file da server Linux remoti

Come clonare un repository Git con Ansible

Come posso copiare i file da un server Google Cloud Compute al mio computer locale

Tail più file remoti