GNU/Linux >> Linux の 問題 >  >> Linux

Ansible を使用してリモート マシンからローカルに複数のファイルをフェッチする方法

解決策 1:

これを行うには、同期モジュールを使用する必要があります。これは rsync の驚くべき力を使用します。任意の深さのファイルとディレクトリ構造をコピーし、防弾で非常に効率的です - 変更された実際のバイトのみをコピーします:

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

キーは mode です パラメータ:

<ブロック引用>

同期の方向を指定します。プッシュ モードでは、localhost またはデリゲートがソースです。プル モードでは、コンテキスト内のリモート ホストがソースです。

解決策 2:

おそらく、リモート コンテンツを登録する必要があり、それをループするよりも、次のように動作するはずです:

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

どこで /remote リモートサーバーのディレクトリパスと /local/ で変更する必要があります マスター上のディレクトリで

解決策 3:

コメントするのに十分な担当者がいない場合は、追加します。

Kęstutisが投稿したものを使用しました。少し変更する必要がありました

- 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 は、私が変更しなければならなかった領域でした。それ以外の場合、ファイルを見つけることができませんでした。

解決策 4:

上記の例を修正

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

解決策 5:

2.9.9 などの最新の ansible バージョンを使用している場合は、アイテムへの引用符が必要だと思います

- 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. SFTPプロトコルを使用してローカルマシンとリモートマシン間でファイルを転送する方法

  2. SCP Linuxコマンド–リモートからローカルへのSSHファイル転送方法

  3. Linuxで複数のファイルを圧縮する方法

  1. 百万のXMLファイルを含むディレクトリから複数のZipを作成するにはどうすればよいですか?

  2. SCP と Rsync を使用して Linux でファイルを転送する方法

  3. リモート マシンに ssh した後、scp でローカルに戻すにはどうすればよいですか?

  1. リモートサーバーからローカルマシンにファイルをコピーする方法は?

  2. Rclone でクラウド ストレージ ファイルを暗号化する方法

  3. 複数のリモート ファイルを追跡する