Это выглядит желательным Вам?
// Replace macros in each .js file
cd('lib');
ls('*.js').forEach(function(file) {
sed('-i', 'BUILD_VERSION', 'v0.1.2', file);
sed('-i', /.*REMOVE_THIS_LINE.*\n/, '', file);
sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file);
});
cd('..');
Если так, ShellJS мог быть интересным, это
портативное устройство (включенный Windows) реализация Unix окружает команды сверху API Node.js.
Я не уверен, если это могло бы использоваться в качестве полнофункциональной оболочки входа в систему, все же. (Возможно, с некоторым обертыванием?)
Вы могли утверждать, что это не действительно оболочка, но Вы знаете TermKit? Это сделано из Node.js + WebKit, Вы могли использовать JS для расширения его (я предполагаю); язык оболочки является все еще Bash (-выход).
Если сервер имеет медленный процессор, избегают контрольных сумм и сжатия с rsync. Я удалил бы ht "-z" опция в команде rsync.
rsync --update -alvr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/
Обратите внимание, что это не избежит rsync для сравнения 650k файлов. Вы могли rsync подкаталоги/var/www один за другим для сокращения количества файлов, проверенных когда-то.
Спасибо, что разместили свой ответ - он мне очень помог. Я думаю, что вы можете упростить цикл:
EVENTS="CREATE,DELETE,MODIFY,MOVED_FROM,MOVED_TO"
sync() {
rsync --update -alvzr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/
}
watch() {
inotifywait -e "$EVENTS" -m -r --format '%:e %f' /var/www/ --exclude '/var/www/.*cache.*'
}
watch | (
while true ; do
read -t 1 LINE && sync
done
)
Вам может понадобиться слегка подкорректировать его, но суть должна быть ясна. Я использую вариант с Amazon's AWS s3 синхронизацией, так что, возможно, я неправильно подставил вашу команду rsync.
Вы можете проверить этот инструмент syncthing
Я использую докеризованную версию из этого репозитория
У меня есть 411 тыс. файлов для синхронизации с помощью этого инструмента, у меня были некоторые проблемы с кодировкой имен файлов для некоторых файлов, названных на арабском языке
#!/bin/bash
docker run -d --rm \
--name=syncthing \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Jordan \
-e UMASK_SET=022 \
-p 8384:8384 \
-p 22000:22000 \
-p 21027:21027/udp \
-v "$(pwd)/config:/config" \
-v "path_to_sync:/config/Sync" \
--net host \
linuxserver/syncthing
Примечание. :используйте графический интерфейс для настройки