Im zweiten Beispiel werden die Stapeldaten über die Standardeingabe gelesen, sodass die Stapeldatei nicht zuerst auf die entfernte Maschine kopiert werden muss. In diesem Beispiel wird das Skript foo.sh vermieden, da eine geänderte Option --read-batch verwendet werden musste. Sie können die Skriptdatei jedoch bearbeiten, wenn Sie sie verwenden möchten (stellen Sie nur sicher, dass keine andere Option versucht, Standard zu verwenden Eingabe, z. B. die Option "--exclude-from = -".
Vorsichtsmaßnahmen:
Die Option "Stapel lesen" erwartet, dass die zu aktualisierende Zielstruktur mit der Zielstruktur identisch ist, die zum Erstellen der Dateigruppe für die Stapelaktualisierung verwendet wurde. Wenn ein Unterschied zwischen den Zielbäumen festgestellt wird, wird das Update möglicherweise mit einer Warnung verworfen (wenn die Datei bereits auf dem neuesten Stand zu sein scheint), oder es wird versucht, die Datei zu aktualisieren, und wenn die Datei nicht überprüft werden kann Wurde das Update mit einem Fehler verworfen. Dies bedeutet, dass es sicher sein sollte, einen Lesebatch-Vorgang erneut auszuführen, wenn der Befehl unterbrochen wurde. Wenn Sie die stapelweise Aktualisierung erzwingen möchten, unabhängig von der Größe und dem Datum der Datei, verwenden Sie die Option -I (beim Lesen des Stapels). Wenn ein Fehler auftritt, befindet sich der Zielbaum wahrscheinlich in einem teilweise aktualisierten Zustand. In diesem Fall,
Die auf allen Zielen verwendete rsync-Version muss mindestens so neu sein wie die, die zum Generieren der Batch-Datei verwendet wurde. Rsync stirbt mit einem Fehler, wenn die Protokollversion in der Batch-Datei zu neu ist, als dass der Batch-Lesevorgang von Rsync verarbeitet werden könnte. Siehe auch die Option --protocol, um zu erfahren, wie das Erstellen von rsync eine Batch-Datei generiert, die ein älterer rsync verstehen kann. (Beachten Sie, dass das Format von Batch-Dateien in Version 2.6.3 geändert wurde, sodass das Mischen älterer Versionen mit neueren Versionen nicht funktioniert.)
Wenn Sie eine Stapeldatei lesen, erzwingt rsync, dass der Wert bestimmter Optionen mit den Daten in der Stapeldatei übereinstimmt, wenn Sie nicht den gleichen Wert wie beim Befehl zum Schreiben im Stapel festgelegt haben. Andere Optionen können (und sollten) geändert werden. Beispielsweise wird "--write-batch" in "--read-batch" geändert, "--files-from" wird gelöscht, und die Optionen "--filter / - include / - exclude" werden nur benötigt, wenn eine der Optionen "--delete" angegeben ist .
Der Code, der die Datei BATCH.sh erstellt, wandelt alle Filter- / Einschluss- / Ausschlussoptionen in eine einzelne Liste um, die als "hier" -Dokument an die Shell-Skriptdatei angehängt wird. Ein fortgeschrittener Benutzer kann dies verwenden, um die Ausschlussliste zu ändern, wenn eine Änderung dessen gewünscht wird, was von --delete gelöscht wird. Ein normaler Benutzer kann dieses Detail ignorieren und einfach das Shell-Skript verwenden, um den entsprechenden Befehl --read-batch für die gestapelten Daten auszuführen.
Der ursprüngliche Batch-Modus in rsync basierte auf "rsync +", die neueste Version verwendet jedoch eine neue Implementierung.
remote destination is not allowed with --read-batch