Before touching rsync, you need to master the Linux CLI basics, the concepts of file permission & owner, and SSH for remote sessions. In this episode you will also set up two directories or two hosts for practice, install rsync version 3.4.x, and verify that the entire environment is ready to use throughout the series.

Welcome to the Learn Rsync series! This series will take you to mastery of rsync — the file synchronization & data transfer tool built on the delta-transfer algorithm — for backup, mirroring, server migration, and deployment. There are 23 episodes in total, arranged in six phases, from conceptual foundations to production readiness.
Before running rsync -avh /data/ /backup/, there are basic skills and tools you must prepare. Why are these prerequisites important? Because rsync works at the filesystem and network layer: it reads permissions, compares timestamps, and — in remote mode — runs over SSH. Without understanding these layers, you will struggle to diagnose problems when backups are inconsistent or transfers fail.
Episode 0 is your roadmap: we will make sure the basic skills are in place, set up practice directories and hosts, install rsync, and verify the environment for the first time. Once this episode is done, the entire series can be followed comfortably.
Rsync is a pure command-line tool. You need to be comfortable with the shell, use pipes and redirects to direct output, and understand exit codes — because we will rely on them for automation in episode 10. A small exercise: check your shell and read the exit code of a command.
echo $SHELL
false; echo $?Rsync can preserve permissions, owners, and timestamps via the -a flag. You must understand the Unix rwx model, the difference between chmod (permissions) and chown (owner/group), and the concepts of user and root. Without this, you won't understand why backup files sometimes end up with different owners — a topic that resurfaces in episode 11.
Rsync's remote mode runs over SSH. You need to understand how to create keys and copy them to another host:
ssh-keygen -t ed25519
ssh-copy-id user@hostssh-keygen -t ed25519 creates a modern key pair without a password (or with a passphrase), and ssh-copy-id places the public key into the target host's ~/.ssh/authorized_keys. Episode 14 will harden this configuration further.
Rsync is available in almost every distro repository. Install it with your package manager:
sudo apt install rsync # Debian/Ubuntu
sudo dnf install rsync # RHEL/Fedora
apk add rsync # AlpineFor practice, you need a source and a destination. The simplest way is two local directories:
mkdir -p ~/rsync-lab/src ~/rsync-lab/dest
echo "hello rsync" > ~/rsync-lab/src/file.txtIdeally, also prepare a second host (VM, VPS, or homelab server) reachable over SSH — because remote mode is covered starting in episode 4. Make sure rsync is installed on the second host too.
If you want to try remote mode, enable the SSH server on the target host:
sudo systemctl enable --now sshd
systemctl is-active sshdOn Debian/Ubuntu the package is called openssh-server; on RHEL/Fedora openssh-server is already included. systemctl is-active sshd should print active if everything is running.
Note
For the early episodes (0-3) two local directories are enough. The second host only really becomes necessary when we get into remote mode in episode 4. You can set it up gradually.
Before moving on to episode 1, run a thorough verification:
rsync --version
which rsync
rsync -a ~/rsync-lab/src/ ~/rsync-lab/dest/
ls -l ~/rsync-lab/dest/rsync --version should print the version (ideally 3.4.4, released June 8, 2026). A quick test copying src/ to dest/ confirms the binary works normally. If your version is older than 3.4.x, you should update first — we'll discuss the security reasons in episode 13.
Warning
Rsync versions below 3.4.0 (older ones, like 3.2.x) have critical security vulnerabilities including RCE. For this series, make sure the version is ≥ 3.4.4 before any practice.
Here's what you've prepared in episode 0:
~/rsync-lab/src and ~/rsync-lab/dest), plus an optional second host.rsync ≥3.4.4 installed and working, SSH server active for remote mode.rsync --version and the first copy test succeeded.If anything is still missing, stop here and complete it before continuing. The 22-episode journey ahead will be much smoother with this strong foundation.
Key takeaways:
rsync --version and the first copy test.In episode 1 we'll cover the history, background, and why you need rsync — from its authorship by Andrew Tridgell & Paul Mackerras in 1996, the name "remote sync" that replaced rcp/scp, to the delta-transfer algorithm and the reasons rsync became the de facto standard for backup & mirroring. Make sure your environment is ready, because the Learn Rsync journey has only just begun!