GNU/Linux >> Belajar Linux >  >> Linux

Cara mengambil banyak file dari mesin jarak jauh ke lokal dengan Ansible

Solusi 1:

Anda harus menggunakan modul sinkronisasi untuk melakukan ini. Ini menggunakan kekuatan rsync yang luar biasa. Ini akan menyalin struktur file &direktori dengan kedalaman apa pun, tahan peluru dan sangat efisien - hanya menyalin byte aktual yang telah berubah:

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

Kuncinya adalah mode parameter:

Tentukan arah sinkronisasi. Dalam mode push, localhost atau delegasi adalah sumbernya; Dalam mode tarik, host jarak jauh dalam konteks adalah sumbernya.

Solusi 2:

Anda mungkin perlu mendaftarkan konten jarak jauh dan kemudian mengulanginya, sesuatu seperti ini seharusnya berfungsi:

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

di mana /remote harus diubah dengan jalur direktori di server jarak jauh Anda dan /local/ dengan direktori di master Anda

Solusi 3:

saya tidak punya cukup perwakilan untuk berkomentar kalau tidak saya akan menambahkannya.

Saya menggunakan apa yang diposting Kęstutis. saya harus membuat sedikit modifikasi

- 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 adalah area yang harus saya ubah. itu tidak dapat menemukan file sebaliknya.

Solusi 4:

Memperbaiki contoh di atas

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

Solusi 5:

baik, jika Anda menggunakan versi terbaru yang memungkinkan, seperti 2.9.9, saya pikir kami perlu memberi tanda kutip untuk item tersebut

- 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. Ventoy:Cara Membuat Drive USB Multiboot dengan Beberapa File ISO

  2. Cara Mentransfer File Antara Mesin Lokal dan Jarak Jauh Menggunakan Protokol SFTP

  3. Perintah SCP Linux – Cara Transfer File SSH dari Jarak Jauh ke Lokal

  1. Cara Mentransfer File di Linux dengan SCP dan Rsync

  2. Bagaimana saya bisa menyalin file dari Google Cloud Compute Server ke mesin lokal saya

  3. Ekor beberapa file jarak jauh

  1. Cara Membuat Zip Banyak File di Linux

  2. Cara mengenkripsi file penyimpanan cloud dengan Rclone

  3. Cara mengirim data ke clipboard lokal dari sesi SSH jarak jauh