inotify и rsync на большом количестве файлов

Это выглядит желательным Вам?

// 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 (-выход).

6
05.12.2013, 15:28
3 ответа

Если сервер имеет медленный процессор, избегают контрольных сумм и сжатия с rsync. Я удалил бы ht "-z" опция в команде rsync.

rsync --update -alvr --exclude '*cache*' --exclude '*.git*' /var/www/* root@secondwebserver:/var/www/

Обратите внимание, что это не избежит rsync для сравнения 650k файлов. Вы могли rsync подкаталоги/var/www один за другим для сокращения количества файлов, проверенных когда-то.

6
27.01.2020, 20:27
  • 1
    я закончил тем, что удалил опцию (z) сжатия и повысил var ОЖИДАНИЯ к 10 (секунды). Это, кажется, помогло, rsync все еще пронзает загрузку ЦП, но ею короче живут. Спасибо –  kyleredon 17.12.2013, 14:48

Спасибо, что разместили свой ответ - он мне очень помог. Я думаю, что вы можете упростить цикл:

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.

1
27.01.2020, 20:27

Вы можете проверить этот инструмент 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

Примечание. :используйте графический интерфейс для настройки

0
01.03.2020, 13:29

Теги

Похожие вопросы