Wenn ich das gesamte Home-Verzeichnis als Quelle angebe (und somit das Backup normal ausführe), werden die Dateien nicht gelöscht. Syncronisiere ich allerdings testweise nur den Order, wo Dateien gelöscht wurden, werden sie einwandfrei im Zielverzeichnis gelöscht.
linus@dell-laptop:~/Dokumente/Scripte$ sudo rsync -a --delete --progress /home/linus/Downlaods/ /media/Linus/backup/linus/Downlaods/
sending incremental file list
deleting Linux-Images/ubuntu-10.10-desktop-i386.iso
deleting Linux-Images/natty-desktop-i386.iso
deleting Linux-Images/kubuntu-10.10-desktop-i386.iso
deleting Linux-Images/bt4-final.iso
Benutze ich vielleicht die falsche Lösch-Option? Die manpage von rsync gibt folgende Lösch-Optionen aus:
--del an alias for --delete-during
--delete delete extraneous files from dest dirs
--delete-before receiver deletes before transfer (default)
--delete-during receiver deletes during xfer, not before
--delete-delay find deletions during, delete after
--delete-after receiver deletes after transfer, not before
--delete-excluded also delete excluded files from dest dirs
--ignore-errors delete even if there are I/O errors
--force force deletion of dirs even if not empty
--max-delete=NUM don't delete more than NUM files
Details zu den Optionen (bei der Option --delete
habe ich einige auffällige Stellen markiert):
--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 sec‐
tion).
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.
--delete-before,
Request that the file-deletions on the receiving side be done before the transfer starts. See --delete (which is implied) for more details
on file-deletion.
Deleting before the transfer is helpful if the filesystem is tight for space and removing extraneous files would help to make the transfer
possible. However, it does introduce a delay before the start of the transfer, and this delay might cause the transfer to timeout (if
--timeout was specified). It also forces rsync to use the old, non-incremental recursion algorithm that requires rsync to scan all the
files in the transfer into memory at once (see --recursive).
--delete-during, --del
Request that the file-deletions on the receiving side be done incrementally as the transfer happens. The per-directory delete scan is done
right before each directory is checked for updates, so it behaves like a more efficient --delete-before, including doing the deletions prior
to any per-directory filter files being updated. This option was first added in rsync version 2.6.4. See --delete (which is implied) for
more details on file-deletion.
--delete-delay
Request that the file-deletions on the receiving side be computed during the transfer (like --delete-during), and then removed after the
transfer completes. This is useful when combined with --delay-updates and/or --fuzzy, and is more efficient than using --delete-after (but
can behave differently, since --delete-after computes the deletions in a separate pass after all updates are done). If the number of
removed files overflows an internal buffer, a temporary file will be created on the receiving side to hold the names (it is removed while
open, so you shouldn’t see it during the transfer). If the creation of the temporary file fails, rsync will try to fall back to using
--delete-after (which it cannot do if --recursive is doing an incremental scan). See --delete (which is implied) for more details on file-
deletion.
--delete-after
Request that the file-deletions on the receiving side be done after the transfer has completed. This is useful if you are sending new per-
directory merge files as a part of the transfer and you want their exclusions to take effect for the delete phase of the current transfer.
It also forces rsync to use the old, non-incremental recursion algorithm that requires rsync to scan all the files in the transfer into mem‐
ory at once (see --recursive). See --delete (which is implied) for more details on file-deletion.
--delete-excluded
In addition to deleting the files on the receiving side that are not on the sending side, this tells rsync to also delete any files on the
receiving side that are excluded (see --exclude). See the FILTER RULES section for a way to make individual exclusions behave this way on
the receiver, and for a way to protect files from --delete-excluded. See --delete (which is implied) for more details on file-deletion.
--ignore-errors
Tells --delete to go ahead and delete files even when there are I/O errors.
--force
This option tells rsync to delete a non-empty directory when it is to be replaced by a non-directory. This is only relevant if deletions
are not active (see --delete for details).
Note for older rsync versions: --force used to still be required when using --delete-after, and it used to be non-functional unless the
--recursive option was also enabled.
--max-delete=NUM
This tells rsync not to delete more than NUM files or directories. If that limit is exceeded, a warning is output and rsync exits with an
error code of 25 (new for 3.0.0).
Also new for version 3.0.0, you may specify --max-delete=0 to be warned about any extraneous files in the destination without removing any
of them. Older clients interpreted this as "unlimited", so if you don’t know what version the client is, you can use the less obvious
--max-delete=-1 as a backward-compatible way to specify that no deletions be allowed (though older versions didn’t warn when the limit was
exceeded).