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 relativedest
string - destination path - absolute or relativerecurse
string - no/yes - Includes all subdirectoriespurge
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
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
---
- 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
ansible-pilot $ ansible-playbook -i virtualmachines/win/inventory copy\ files\ to\ remote\ hosts/win_robocopy.yml
PLAY [win_robocopy module Playbook] *******************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [WindowsServer]
TASK [data synchronization] ***********************************************************************
changed: [WindowsServer]
PLAY RECAP ****************************************************************************************
WindowsServer : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible-pilot $
idempotency
ansible-pilot $ ansible-playbook -i virtualmachines/win/inventory copy\ files\ to\ remote\ hosts/win_robocopy.yml
PLAY [win_robocopy module Playbook] *******************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [WindowsServer]
TASK [data synchronization] ***********************************************************************
ok: [WindowsServer]
PLAY RECAP ****************************************************************************************
WindowsServer : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible-pilot $
before execution
after execution
Conclusion
Now you know how to back up With Robocopy on Windows with Ansible.
Subscribe to the YouTube channel, Medium, and Website, X (formerly Twitter) to not miss the next episode of the Ansible Pilot.Academy
Learn the Ansible automation technology with some real-life examples in my Udemy 300+ Lessons Video Course.
My book Ansible By Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps
Donate
Want to keep this project going? Please donate