How to Backup With Robocopy on Windows with Ansible?
I'm going to show you a live Playbook and some simple Ansible code.
I'm Luca Berton and welcome to today's episode of Ansible Pilot.
Ansible backing up with RoboCopy
> community.windows.win_robocopy: Synchronizes the contents of two directories using Robocopy
Today we're talking about the Ansible module win_robocopy.
The full name is community.windows.win_robocopy, which means that is part of the collection targeting Windows platforms.
Synchronizes the contents of two directories using Robocopy.
Under the hood, it uses the RoboCopy utility, since that should be available on most modern Windows systems.
Parameters
src_string_ - source path - absolute or relative
dest_string_ - destination path - absolute or relative
recurse_string_ - no/yes - Includes all subdirectories
purge_string_ - no/yes - Deletes any files/directories found in the destination that do not exist in the source.
flags_string_ - Additional flags
Let's see the parameter of the win_robocopy module.
The only mandatory parameters are "src" and "dest" parameters.
The "src" parameter is mandatory and specifies the path on the source host that will be synchronized to the destination. The path can be absolute or relative.
Same story for the dest parameter that specifies the path on the destination host that will be synchronized from the source.
Paths could be Local or Remote according to your needs.
The "recurse" parameter is default as disabled but you should consider enabling it when you want to synchronize all the subdirectories.
If you need to delete all the files and directories found in the destination that do not exist in the source you must enable the purge parameter.
It's possible to specify additionals Robocopy parameters via the "flags" parameter, but not all are supported.
Links
- [community.windows.win_robocopy](https://docs.ansible.com/ansible/latest/collections/community/windows/win_robocopy_module.html)
- [RoboCopy](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy)
## Playbook
How to Backup With Robocopy on Windows with Ansible Playbook.
I'm going to show you how to replicate some "examples" directory tree in "examples-backup" a Windows machine using the RoboCopy utility via the win_robocopy module.
code
``yaml
---
- name: win_robocopy module Playbook
hosts: all
become: false
vars:
source: "Desktop/examples"
destination: "Desktop/examples-backup"
tasks:
- name: data syncronization
community.windows.win_robocopy:
src: '{{ source }}'
dest: '{{ destination }}'
`
execution
``bash
ansible-pilot $ ansible-playbook -i virtualmachines/win/inventory copy\ files\ to\ remote\ hosts/win_robocopy.yml
PLAY [win_robocopy module Playbook] *
TASK [Gathering Facts] *