# rsync

rsync is an open-source utility and file transfer program that uses a delta-transfer algorithm to synchronize files by sending only their differences.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Using tar and SSH as an alternative to rsync for transferring files

DevFeed: [Using tar and SSH as an alternative to rsync for transferring files](<https://devfeed.tech/articles/tar-a-slop-free-alternative-to-rsync-20818.md>)

Original publisher: [Read original article](<https://drewdevault.com/blog/rsync-without-rsync/>)

Author: March

Published: 2026-03-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Drew DeVault](<https://devfeed.tech/sources/drew-devault.md>)

Topics: [rsync](<https://devfeed.tech/topics/rsync.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [ssh](<https://devfeed.tech/topics/ssh.md>), [Compression](<https://devfeed.tech/topics/compression.md>)

Tags: [command-line](<https://devfeed.tech/tags/command-line.md>), [compression](<https://devfeed.tech/tags/compression.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [rsync](<https://devfeed.tech/tags/rsync.md>), [ssh](<https://devfeed.tech/tags/ssh.md>)

### AI overview

The article explains how to use tar piped through SSH to transfer files to another host, preserving ownership and permissions while using gzip compression. It notes that tar does not identify and skip files that are already up to date, unlike rsync, and presents basic tar options and an optional progress display with pv.

### Source excerpt

So apparently rsync is slop now. When I heard, I wanted to drop a quick note on my blog to give an alternative: tar. It doesn't do everything that rsync does, in particular identifying and skipping up-to-date files, but tar + ssh can definitely accomodate the use case of "transmit all of these files over an SSH connection to another host". Consider the following: tar -cz public | ssh example.org tar -C /var/www -xz This will transfer the contents of ./public/ to example.org:/var/www/public/, preserving file ownership and permissions and so on, with gzip compression. This is roughly the equivalent of: rsync -a public example.org:/var/www/ Here's the same thing with a lightweight progress display thanks to pv: tar -cz public | pv | ssh example.org tar -C /var/www -xz I know tar is infamously difficult to remember how to use. Honestly, I kind of feel that way about rsync, too. But, here's a refresher on the most important options for this use-case. To use tar, pick one of the following modes with the command line flags: -c: create an archive -x: extract an archive Use -f <filename> to read from or write to a file. Without this option, tar uses stdin and stdout, which is what the pipelines above rely on. Use -C <path> to change directories before archiving or extracting files. Use -z to compress or decompress the tarball with gzip. That's basically everything you need to know about tar to use it for this purpose (and for most purposes, really). With rsync, to control where the files end up you have to memorize some rules about things like whether or not each path has a trailing slash. With tar, the rules are, in my opinion, a bit easier to reason about. The paths which appear on the command line of tar -c are the paths that tar -x will open to create those files. So if you run this: tar -c public/index.html public/index.css You get a tarball which has public/index.html and public/index.css in it. When tar -x opens this tarball, it will call fopen("public/index.html", "w

## Backups incrementales con rsync en Linux

DevFeed: [Backups incrementales con rsync en Linux](<https://devfeed.tech/articles/backups-incrementales-con-rsync-en-linux-34045.md>)

Original publisher: [Read original article](<https://tengoping.com/blog/backup-incremental-rsync-servidores-linux/>)

Author: Antonio Pérez

Published: 2026-01-16T00:00:00Z

Content type: tutorial

Language: es

Sources: [tengoping.com](<https://devfeed.tech/sources/tengoping-com.md>)

Topics: [backups](<https://devfeed.tech/topics/backups.md>), [rsync](<https://devfeed.tech/topics/rsync.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Script](<https://devfeed.tech/topics/script.md>), [ssh](<https://devfeed.tech/topics/ssh.md>), [systemd](<https://devfeed.tech/topics/systemd.md>)

Tags: [backup](<https://devfeed.tech/tags/backup.md>), [backups](<https://devfeed.tech/tags/backups.md>), [filesystem](<https://devfeed.tech/tags/filesystem.md>), [incremental](<https://devfeed.tech/tags/incremental.md>), [linux](<https://devfeed.tech/tags/linux.md>), [nas](<https://devfeed.tech/tags/nas.md>), [rsync](<https://devfeed.tech/tags/rsync.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [systemd](<https://devfeed.tech/tags/systemd.md>)

### AI overview

A tutorial on implementing incremental backups with rsync and hardlinks on Linux servers. It explains how unchanged files are hardlinked to save space, warns that hardlinks are not independent copies, discusses filesystem compatibility and destructive synchronization risks, and covers SSH transfers, exclusions, systemd timers, and integrity checks.

### Source excerpt

Cómo implementar una estrategia de backups incrementales usando rsync y hardlinks para ahorrar espacio y tiempo en tus servidores.

## Restrict SSH to rsync for deploying files with GitHub Actions

DevFeed: [Restrict SSH to rsync for deploying files with GitHub Actions](<https://devfeed.tech/articles/restrict-ssh-to-rsync-for-deploying-files-with-github-actions-29327.md>)

Original publisher: [Read original article](<https://www.schakko.de/2020/07/20/restrict-ssh-to-rsync-for-deploying-files-with-github-actions/>)

Author: Schakko

Published: 2020-07-20T07:32:08Z

Content type: tutorial

Language: en

Sources: [Schakko](<https://devfeed.tech/sources/schakko.md>)

Topics: [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [rsync](<https://devfeed.tech/topics/rsync.md>), [Security](<https://devfeed.tech/topics/security.md>), [ssh](<https://devfeed.tech/topics/ssh.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>)

Tags: [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [public-key](<https://devfeed.tech/tags/public-key.md>), [rsync](<https://devfeed.tech/tags/rsync.md>), [security](<https://devfeed.tech/tags/security.md>), [ssh](<https://devfeed.tech/tags/ssh.md>)

### AI overview

This tutorial explains how to restrict rsync access over SSH when deploying a GitHub repository with GitHub Actions. It presents a custom SSH wrapper script and the official Perl-based rrsync script, including read-only or write-only restrictions for a specified directory.

### Source excerpt

rsync access can be restricted with a custom wrapper script or an official script named "rrsync". Access to your remote filesystem should always be restricted so you won't leak any information in case of a security breach. I've used GitHub Actions a lot in the last few months. For web [...] The post Restrict SSH to rsync for deploying files with GitHub Actions appeared first on schakko.de.

## \[Linux\] Simplest possible snapshot-style backups using rsync

DevFeed: [\[Linux\] Simplest possible snapshot-style backups using rsync](<https://devfeed.tech/articles/linux-simplest-possible-snapshot-style-backups-using-rsync-20554.md>)

Original publisher: [Read original article](<https://yurichev.com/blog/bak/>)

Published: 2019-10-15T22:00:00Z

Content type: tutorial

Language: en

Sources: [Dennis Yurichev](<https://devfeed.tech/sources/dennis-yurichev.md>)

Topics: [Linux](<https://devfeed.tech/topics/linux.md>), [rsync](<https://devfeed.tech/topics/rsync.md>), [Script](<https://devfeed.tech/topics/script.md>), [ransomware](<https://devfeed.tech/topics/ransomware.md>)

Tags: [backup](<https://devfeed.tech/tags/backup.md>), [backups](<https://devfeed.tech/tags/backups.md>), [linux](<https://devfeed.tech/tags/linux.md>), [ls](<https://devfeed.tech/tags/ls.md>), [malware](<https://devfeed.tech/tags/malware.md>), [ransomware](<https://devfeed.tech/tags/ransomware.md>), [rsync](<https://devfeed.tech/tags/rsync.md>), [script](<https://devfeed.tech/tags/script.md>)

### AI overview

A tutorial for creating snapshot-style backups on Linux with rsync, hard links, and dated directories. It explains how snapshots preserve file history, conserve disk space by storing unchanged files only once, and allow older versions to remain available after deletion or ransomware encryption.

### Source excerpt

[Linux] Simplest possible snapshot-style backups using rsync

## Automatyczne backupy w stylu snapshot z rsync'iem

DevFeed: [Automatyczne backupy w stylu snapshot z rsync'iem](<https://devfeed.tech/articles/automatyczne-backupy-w-stylu-snapshot-z-rsync-iem-27506.md>)

Original publisher: [Read original article](<https://gagor.pro/2011/12/automatyczne-backupy-w-stylu-snapshot-z-rsynciem/>)

Author: Tom

Published: 2011-12-29T00:00:00Z

Content type: tutorial

Language: pl

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [rsync](<https://devfeed.tech/topics/rsync.md>)

Tags: [backup](<https://devfeed.tech/tags/backup.md>), [rsync](<https://devfeed.tech/tags/rsync.md>)

### AI overview

The article discusses snapshot-style backups using rsync as an alternative to compressed full, differential, and incremental backups, whose restoration process can be slow and cumbersome. The author says they developed a backup script based on another article.

### Source excerpt

Można znaleźć wiele tutoriali jakimi narzędziami wykonywać backupy. W większości przypadków absolutnie wystarczający okaże się flexbackup. Bardziej wymagający wykorzystają BackupPC, Baculę lub Amandę. Narzędzia te pozwalają wykonać kopie pełne, różnicowe, przyrostowe - kompresując je dla zaoszczędzenia miejsca. Wszystko fajnie - ale problemy pojawiają się przy dostępie do tych danych. Żeby odzyskać plik zmodyfikowany dzisiaj trzeba rozpakować najpierw kopię pełną, potem różnicową, przyrostową by wreszcie wyciągnąć plik z wczoraj... hmm ten też jest skopany. No to lecimy jeszcze raz...

## Emacs Muse hacking

DevFeed: [Emacs Muse hacking](<https://devfeed.tech/articles/emacs-muse-hacking-34362.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2010/03/emacs-muse-hacking/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2010-03-04T12:33:00Z

Content type: tutorial

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [Emacs](<https://devfeed.tech/topics/emacs.md>), [Code](<https://devfeed.tech/topics/code.md>), [HTML](<https://devfeed.tech/topics/html.md>), [rsync](<https://devfeed.tech/topics/rsync.md>), [Shell](<https://devfeed.tech/topics/shell.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [emacs](<https://devfeed.tech/tags/emacs.md>), [html](<https://devfeed.tech/tags/html.md>), [rsync](<https://devfeed.tech/tags/rsync.md>), [shell](<https://devfeed.tech/tags/shell.md>)

### AI overview

An Emacs Muse user explains how to customize the publishing process to generate one file per blog article and add an index of previous articles. The article describes using Muse output-buffer functions and provides code that requires manual editing for customization.

### Source excerpt

Now you know what piece of software is used to publish this blog. I really like it, the major mode makes it a great experience to be using this tool, and the fact that you produce the HTML and rsync it all from within Emacs ( C-c C-p then C-c C-r with some easy elisp code) is a big advantage as far as I'm concerned. No need to resort to shell and Makefile.

## Emacs Muse based publishing

DevFeed: [Emacs Muse based publishing](<https://devfeed.tech/articles/emacs-muse-based-publishing-34352.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2009/10/emacs-muse-based-publishing/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2009-10-06T15:23:00Z

Content type: tutorial

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [Emacs](<https://devfeed.tech/topics/emacs.md>), [rsync](<https://devfeed.tech/topics/rsync.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [command-line](<https://devfeed.tech/tags/command-line.md>), [emacs](<https://devfeed.tech/tags/emacs.md>), [muse](<https://devfeed.tech/tags/muse.md>), [rsync](<https://devfeed.tech/tags/rsync.md>)

### AI overview

An Emacs Muse publishing workflow uses an interactive Emacs command to publish a blog with rsync, including optional synchronization of static CSS, image, and PDF directories.

### Source excerpt

As you might have noticed, this little blog of mine is not compromising much and entirely maintained from Emacs. Until today, I had to resort to term to upload my publications, though, as I've been too lazy to hack up the tools integration for simply doing a single rsync command line. That was one time to many: (defvar dim:muse-rsync-options "-avz" "rsync options") (defvar dim:muse-rsync-source "~/dev/muse/out" "local path from where to rsync, with no ending /") (defvar dim:muse-rsync-target "dim@tapoueh.org:/home/www/tapoueh.org/blog.tapoueh.org" "Remote URL to use as rsync target, with no ending /") (defvar dim:muse-rsync-extra-subdirs '("../css" "../images" "../pdf") "static subdirs to rsync too, path from dim:muse-rsync-source, no ending /") (defun dim:muse-project-rsync (&optional static) "publish tapoueh.org using rsync" (interactive "P") (let* ((rsync-command (format "rsync %s %s %s" dim:muse-rsync-options (concat dim:muse-rsync-source "/") (concat dim:muse-rsync-target "/")))) (with-current-buffer (get-buffer-create "*muse-rsync*") (erase-buffer) (insert (concat rsync-command "\n")) (message "%s" rsync-command) (insert (shell-command-to-string rsync-command)) (insert "\n") (when static (dolist (subdir dim:muse-rsync-extra-subdirs) (let ((cmd (format "rsync %s %s %s" dim:muse-rsync-options (concat dim:muse-rsync-source "/" subdir) dim:muse-rsync-target))) (insert (concat cmd "\n")) (message "%s" cmd) (insert (shell-command-to-string cmd)) (insert "\n"))))))) (define-key muse-mode-map (kbd "C-c R") 'dim:muse-project-rsync) So now to publish this blog, it's just a C-c R away! :)