У меня есть сервер, на котором я занимаюсь веб-разработкой и тестированием, и у меня есть несколько внешних серверов, которые работают за балансировщиком нагрузки. Я написал простой сценарий bash, чтобы rsync каталог на моем сервере dev для всех рабочих серверов, когда я исправляю ошибку и т.д.
Rsync, кажется, работает, но когда я на самом деле иду на другие серверы, ни один из файлов не был обновлен. Что я делаю неправильно?
#!/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
На данный момент у меня есть только один IP-адрес в цикле for, но я буду добавлять больше со временем. Вот как я выполняю сценарий и сокращенный вывод:
[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 root@xxx.xxx.xxx.xxx:/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]#
Если я снова запускаю команду, rsync, кажется, работает должным образом и, как и ожидалось, не показывает никаких файлов в списке, якобы потому, что все они были обновлены. Однако, когда я захожу и смотрю файлы на сервере xxx.xxx.xxx.xxx, они вообще не обновляются.