---
name: "rdiff"
section: "1"
platform: "linux"
package: "librsync"
version: "1:2.3.4-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/rdiff"
---

# rdiff(1)

compute and apply signature-based file differences

## NAME

rdiff - compute and apply signature-based file differences

## SYNOPSYS

```
rdiff [options] signature old-file signature-file
```

**rdiff** \[*options*\] **delta** *signature-file new-file delta-file*

**rdiff** \[*options*\] **patch** *old-file delta-file new-file*

## USAGE

You can use **rdiff** to update files, much like **rsync** does. However, unlike **rsync**, **rdiff** puts you in control.  There are three steps to updating a file: **signature**, **delta**, and **patch**. Use the **signature** subcommand to generate a small *signature-file* from the *old-file*. Use the **delta** subcommand to generate a small *delta-file* from the *signature-file* to the *new-file*. Use the **patch** subcommand to apply the *delta-file* to the *old-file* to regenerate the *new-file*.

## DESCRIPTION

In every case where a filename must be specified, - may be used instead to mean either standard input or standard output as appropriate.  Be aware that if you do this, you'll need to terminate your *options* with -- or **rdiff** will think you are passing it an empty option.

## RETURN VALUE

0 for successful completion, 1 for environmental problems (file not found, invalid options, IO error, etc), 2 for a corrupt file and 3 for an internal error or unhandled situation in librsync or rdiff.

## SEE ALSO

[**librsync**(3)](/librsync/3.md)

## AUTHOR

Martin Pool \<mbp@sourcefrog.net\>

The original rsync algorithm was discovered by Andrew Tridgell.

rdiff development has been supported by Linuxcare, Inc and VA Linux Systems.
