0

I'm trying to delete files using rsync --delete but i keep getting this output.

cli screenshot

3
  • 2
    rsync is not a general deleting tool. It is a copying tool to copy/update a target directory tree with new or updated files in the corresponding source directory tree. The --delete option is 'only' to synchronize, that is to delete files in the target, if the corresponding file in the source has been deleted.
    – sudodus
    Oct 17, 2021 at 18:21
  • 2
    rm 'remove' is the standard Linux tool to remove alias delete a file: Corresponding to your screenshot you can try rm /tmp/backup/foto3.txt or with a checkpoint, to comfirm, rm -i /tmp/backup/foto3.txt
    – sudodus
    Oct 17, 2021 at 19:16
  • 1
    @sudodus so in order to use --delete i have to remove the original files from the original directory? Oct 18, 2021 at 10:34

1 Answer 1

0

rsync --delete

@sudodus so in order to use --delete i have to remove the original files from the original directory?

Yes, but, I would say that the intention is the other way around: It will help you delete a file in the target, when you have deleted the corresponding file in the source.

If you want to avoid copying some files (but keep them in the source), you can use --exclude.


rsync is not a general deleting tool. It is a copying tool to copy/update a target directory tree with new or updated files in the corresponding source directory tree. The --delete option is 'only' to synchronize, that is to delete a file in the target, if the corresponding file in the source has been deleted.

See the detailed description in the manual man rsync

        --delete                delete extraneous files from dest dirs
        --delete-before         receiver deletes before xfer, not during
        --delete-during         receiver deletes during the transfer
        --delete-delay          find deletions during, delete after
        --delete-after          receiver deletes after transfer, not during
        --delete-excluded       also delete excluded files from dest dirs
        --ignore-missing-args   ignore missing source args without error
        --delete-missing-args   delete missing source args from destination


   --delete
          This  tells  rsync to delete extraneous files from the receiving
          side (ones that aren’t on the sending side), but  only  for  the
          directories  that  are  being synchronized.  You must have asked
          rsync to send the whole directory (e.g. "dir" or "dir/") without
          using  a  wildcard  for  the directory’s contents (e.g. "dir/*")
          since the wildcard is expanded by the shell and rsync thus  gets
          a  request  to  transfer individual files, not the files’ parent
          directory.  Files that are excluded from the transfer  are  also
          excluded from being deleted unless you use the --delete-excluded
          option or mark the rules as only matching on  the  sending  side
          (see the include/exclude modifiers in the FILTER RULES section).

          Prior  to  rsync  2.6.7, this option would have no effect unless
          --recursive was enabled.  Beginning with 2.6.7,  deletions  will
          also occur when --dirs (-d) is enabled, but only for directories
          whose contents are being copied.

          This option can be dangerous if used incorrectly!  It is a  very
          good  idea to first try a run using the --dry-run option (-n) to
          see what files are going to be deleted.

          If the sending side detects any I/O errors, then the deletion of
          any  files  at  the  destination will be automatically disabled.
          This is to prevent temporary filesystem failures  (such  as  NFS
          errors)  on  the sending side from causing a massive deletion of
          files on the  destination.   You  can  override  this  with  the
          --ignore-errors option.

          The   --delete   option   may   be  combined  with  one  of  the
          --delete-WHEN   options   without   conflict,   as    well    as
          --delete-excluded.    However,  if  none  of  the  --delete-WHEN
          options are specified, rsync  will  choose  the  --delete-during
          algorithm  when  talking  to  rsync  3.0.0  or  newer,  and  the
          --delete-before algorithm when talking to an older  rsync.   See
          also --delete-delay and --delete-after.

rm 'remove' is the standard Linux tool to remove alias delete a file

Corresponding to your screenshot you can try

rm /tmp/backup/foto3.txt

or with a checkpoint, to comfirm,

rm -i /tmp/backup/foto3.txt
2
  • 1
    hi @sudodus could you expand on --exclude please. Let's say, source and target are in sync using rsync; both contains 3 files: a.txt b.txt c.txt. Now I like to keep a.txt in source but not in target; and wants to remove c.txt from source but wants to keep it in target. So how should I use --exclude please. Thanks a lot.
    – Jags
    Oct 18, 2021 at 11:53
  • @Jags, please create an own question and link to it here, so that I can find it easily, and I will try to explain.
    – sudodus
    Oct 18, 2021 at 11:55

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .