Ich versuche, Verzeichnis A von Server1 mit Verzeichnis B von Server2 zu synchronisieren.
Ich saß im Verzeichnis A von Server1 und führte die folgenden Befehle aus.
rsync -av * server2::sharename/B
Das Interessante ist jedoch, dass alle Dateien und Verzeichnisse außer .htaccess oder versteckten Dateien im Verzeichnis A synchronisiert werden. Alle versteckten Dateien in Unterverzeichnissen werden synchronisiert.
Ich habe auch den folgenden Befehl ausprobiert:
rsync -av --include=".htaccess" * server2::sharename/B
aber die Ergebnisse sind die gleichen.
Irgendwelche Ideen, warum versteckte Dateien eines Verzeichnisses nicht synchronisiert werden und wie man es behebt. Ich laufe als Root-Benutzer.
Vielen Dank
Antworten:
Dies liegt daran, dass
*
standardmäßig alle Dateien im aktuellen Arbeitsverzeichnis mit Ausnahme der Dateien, deren Name mit einem Punkt beginnt, erweitert werden. Daher werdenrsync
diese Dateien niemals als Argumente empfangen.Sie können
.
das aktuelle Arbeitsverzeichnis an Folgendes übergebenrsync
:Auf diese Weise
rsync
wird nach Dateien gesucht, die im aktuellen Arbeitsverzeichnis übertragen werden sollen, anstatt nach Dateien zu suchen, die*
erweitert werden.Alternativ können Sie den folgenden Befehl verwenden, um
*
alle Dateien zu erweitern, einschließlich derer, die mit einem Punkt beginnen:Siehe auch shopt manpage .
quelle
rsync -avz [email protected]:/remote/path/. /destination/path
erledigt den JobFür alle , die zwischen Servern (inklusive aller versteckten Dateien) sync Verzeichnisse versuchen , ist einfach - zB die Synchronisierung
somedirA
aufsource-server
zusomedirB
auf einem Zielserver - versuchen Sie dies :Beachten Sie die Schrägstriche am Ende beider Pfade. Jede andere Syntax kann zu unerwarteten Ergebnissen führen!
Außerdem ist es für mich am einfachsten,
rsync
Befehle vom Zielserver auszuführen , da es einfacher ist, sicherzustellen, dass ich über den richtigen Schreibzugriff verfüge (dh ich muss möglicherweisesudo
den obigen Befehl ergänzen ).Wahrscheinlich selbstverständlich, aber Ihr Remote-Benutzer benötigt natürlich auch Lesezugriff
somedirA
auf Ihren Quellserver. :) :)quelle
.htaccess
Datei synchronisiert ?-e ssh
gibt die Verbindungsmethode an.Ich hatte das gleiche Problem.
Als ich den folgenden Befehl ausführte, wurden die versteckten Dateien nicht synchronisiert
Aber als ich die Schrägstriche am Ende der Pfade hinzufügte, wurden die versteckten Dateien synchronisiert.
Beachten Sie die Schrägstriche am Ende der Pfade , da Brian Lacy sagte, die Schrägstriche seien der Schlüssel. Ich habe nicht den Ruf, seinen Beitrag zu kommentieren, sonst hätte ich das getan.
quelle
shopt -s dotglob
Ich denke, das Problem ist auf die Erweiterung des Shell-Platzhalters zurückzuführen. Verwenden . statt Stern.
Betrachten Sie den folgenden Beispielverzeichnisinhalt
Die Platzhaltererweiterung der Shell übersetzt die Argumentliste, aus der das rsync-Programm stammt
in
bevor der Befehl ausgeführt wird.
quelle
Das
*
weist rsynch an, versteckte Dateien nicht zu synchronisieren. Sie sollten es nicht auslassen.quelle