Linux / Unix rsync: Delete Source File After Transfer

I would like to move all desktop:~/Downloads/*.avi files from my desktop to laptop:~/Download/ using rsync. How do I delete source file after successful transfer is done using rsync command under BSD/Unix/Linux/Apple OS X operating systems?

Tutorial details
Difficulty level Easy
Root privileges No
Requirements rsync
Est. reading time N/A
You need to pass the --remove-source-files option to the rsync command. It tells rsync to remove from the sending side the files (meaning non-directories) that are a part of the transfer and have been successfully duplicated on the receiving side. Do not pass the --delete option to rsync command as it delete extraneous files from destination directory.

Delete source after successful transfer using rsync

The syntax is:

rsync --remove-source-files -options /path/to/src/ /path/to/dest
rsync --remove-source-files -options /path/to/src/ computerB:/path/to/dest
rsync --remove-source-files -av /path/to/src/*.avi computerB:/path/to/dest

You can always perform a trial run with no changes made using --dry-run option:

rsync --dry-run --remove-source-files -azv /path/to/Download/*.avi laptop:~/Download

If you like output run the final command without --dry-run option:

rsync --remove-source-files -azv /path/to/Download/*.avi laptop:~/Download

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 9 comments so far... add one

CategoryList of Unix and Linux commands
Disk space analyzersdf ncdu pydf
File Managementcat tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
9 comments… add one
  • Vijay Sep 14, 2012 @ 5:17

    This is one of the good aspect of rsync. Additionally, you can use this too --delete-after.

    • Dan Mar 14, 2014 @ 6:33

      --delete-after will remove the destination files after the transfer, not the source files.

  • Jalal Hajigholamali Sep 15, 2012 @ 4:54

    Very nice article….

  • Pankaj Jul 24, 2013 @ 6:13

    this is to delete source file what would be the command if we want to delete an old file from destination after rsync complete
    my scenario is
    rsync -e ‘ssh -p 22’ -Cavz user@remote_computer:/home/user/dbbackup /home/user/backup/
    but this command rsync new file but also keep the old file in my home/user//backup/
    I want to remove the old file just want newly copied file.

    Please help.

  • Matt Aug 8, 2013 @ 19:09

    actually its called –remove-sent-files now i think? Well my version was anyway

  • Bharat Mar 10, 2014 @ 8:18

    Please explain something about differential backup in rsync.

  • shgn Jan 11, 2015 @ 5:59

    Thank you. How to delete directory from source after sync beside –remove-source-files?

  • Tyee Cambron May 26, 2015 @ 2:02

    Wait, what is the -options perimeter for??? I don’t understand, because i didn’t see it in the ‘man rsync’ command on my macbook.

    • Andrew Jul 11, 2015 @ 11:11

      Tyee Cambron, the “-options” perimeter is not an actual perimeter. The author has added that in to show that that is where you put your options, such as avz. So “-options” would be replaced by “-avz”

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum