GNU/Linux >> LINUX-Kenntnisse >  >> Linux

RSYNC löscht keine Quellverzeichnisse

Die Manpage sagt sogar:

--remove-source-files   sender removes synchronized files (non-dirs)

Wenn Sie leere Verzeichnisse in Ihrer Quelle entfernen möchten, wenn noch Dateien übrig sind, tun Sie Folgendes:

find . -depth -type d -empty -delete

Wenn es nur ein leeres Quellverzeichnis ist, ein rmdir <directory> reicht natürlich aus.


Das Verhalten von --remove-source-files die Sie beobachten, ist genau das, was durch man rsync angegeben wird :

--remove-source-files

   This 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.

Es gibt keinen speziellen Befehl zum Entfernen der Verzeichnisse, wie diese beiden Diskussionen in StackExchange und ServerFault deutlich zeigen. Die dort vorgeschlagene Lösung besteht darin, zwei separate Befehle auszugeben:

 rsync -av --ignore-existing --remove-source-files source/ destination/ && \
 rsync -av --delete `mktemp -d`/ source/ 

Der letzte Teil des Befehls, der in diesen beiden Beiträgen vorgeschlagen wird,

 rmdir source/

das zum Entfernen des (jetzt geleerten) Quellverzeichnisses benötigt wird, hat dieses Formular in diesen Beiträgen, da die OPs und die Antworten rsync verwenden, um große Mengen von Dateien innerhalb desselben Computers zu verschieben. In Ihrem Fall müssen Sie dies manuell tun.


Mit "rm -rf " hat eine inhärente Race-Condition, Sie könnten nämlich Dateien löschen, die gerade zwischen dem rsync erstellt wurden und der rm Anrufungen.

Ich bevorzuge:

rsync --remove-source-files -a server:incoming/incoming/ &&

sshserver finden eingehende -type d -delete

Dadurch werden die Verzeichnisse NICHT entfernt, wenn sie nicht leer sind.


Linux
  1. [Gelöst]:Warum hat rsync keine versteckten Dateien/Verzeichnisse kopiert und warum enthält Sternchen keine versteckten (Punkt-)Dateien in Linux?

  2. Warum funktioniert die automatische Vervollständigung nicht, wenn ein Befehlsname nach „Quelle“ eingegeben wird?

  3. Vsftpd listet den Inhalt eines Verzeichnisses nicht auf?

  4. Warum funktioniert `exit &` nicht?

  5. Linux Dateien und Verzeichnisse löschen

So schließen Sie Dateien und Verzeichnisse mit Rsync aus

So entfernen (löschen) Sie das Verzeichnis in Linux

So finden und löschen Sie leere Verzeichnisse in Linux

Drahtloses Netzwerk verbindet sich in KDE nicht automatisch wieder

Quellbefehl nicht gefunden

Emporkömmling sieht meinen Job nicht