Ich habe einen Server, auf dem ich meine Webentwicklung und Tests durchführe, und ich habe eine Reihe von Frontend-Servern, die hinter einem Load Balancer sitzen. Ich habe ein einfaches Bash-Skript geschrieben, um ein Verzeichnis auf meinem Entwicklungsserver auf allen Produktionsservern zu rsyncieren, wenn ein Fehler behoben wird usw.
Das rsync-Gerät wirkt, aber wenn ich tatsächlich zu den anderen Servern gehe, wurde keine der Dateien aktualisiert. Was mache ich falsch?
#!/bin/bash
directory=$1
echo "$directory"
set -x
for host in "xxx.xxx.xxx.xxx"
do
rsync -avz -e ssh ${directory} root@${host}:${directory}
done
Im Moment habe ich nur eine IP-Adresse in der for-Schleife, aber im Laufe der Zeit werde ich weitere hinzufügen. So führe ich das Skript und die abgekürzte Ausgabe aus:
[root@admin vhosts]# ./rsync_to_frontend.sh /var/www/scripts
/var/www/scripts
+ for host in '"xxx.xxx.xxx.xxx"'
+ rsync -avz -e ssh /var/www/scripts [email protected]:/var/www/scripts
sending incremental file list
scripts/
scripts/fetchTweets.php
scripts/syncMediaFiles.log
scripts/syncMediaFiles.php
.....
sent 7395053 bytes received 1252 bytes 2113230.00 bytes/sec
total size is 36718000 speedup is 4.96
[root@admin vhosts]#
Wenn ich den Befehl erneut ausführen, scheint Rsync ordnungsgemäß zu funktionieren und zeigt erwartungsgemäß keine Dateien in der Liste an, angeblich, weil sie alle aktualisiert wurden. Wenn ich mir jedoch die Dateien auf dem Server xxx.xxx.xxx.xxx ansehe, wurden sie überhaupt nicht aktualisiert.
find
es im ziel, ich glaube du schaust (kopierst) in den falschen ordnerrsync -av /src/foo /dest
.rsync -av /src/foo/ /dest/foo
Antworten:
Aufgrund der strengen Anforderungen für nachfolgende Schrägstriche bei der Verwendung von rsync musste ich nur sicherstellen, dass beim rsyncieren eines Verzeichnisses ein nachstehender Schrägstrich gesetzt wird:
Schlecht:
vs gut:
quelle