Моя цель - сделать определенный каталог доступным как tmpfs. Во время работы сервера в этом каталоге будут внесены некоторые изменения, и эти изменения должны быть синхронизированы с постоянным каталогом, отличным от tmpfs, на жестком диске через rsync.
После загрузки сервера последнюю версию из постоянного каталога, отличного от tmpfs, необходимо переместить в tmpfs и запустить синхронизацию rsync.
Боюсь, что rsync сотрет резервную копию, не относящуюся к tmpfs, если каталог tmpfs будет пуст ..
Я сейчас так делаю:
cat /etc/rc.local (псевдокод)
удалите задание cron "tmpfs rsync" из / var / spool / cron / crontabs, если оно есть
cp -r / путь / к / не-tmpfs-backup / путь / к / tmpfs / каталог
добавьте / var / spool / cron / crontabs с помощью cronjob "tmpfs rsync"
Что вы думаете?
Я хотел просто прокомментировать отличный ответ troyengel выше, но для этого не хватает репутации на serverfault.
Одно исправление заключается в том, что между -aq и --delete должен быть пробел.
Кроме того, я создал скрипт зеркалирования, который будет проверять наличие блокировки файла на диске / tmpfs и зеркалировать с диска в RAM при первом запуске, а затем из RAM на диск:
#!/bin/sh
if [ -f /workspace/z/some/deep/location/inited ]; then
ionice -c2 -n7 nice -n 19 rsync -aq --delete /workspace/* $HOME/workspace 1>/dev/null
else
ionice -c2 -n0 nice -n 19 rsync -aq --delete $HOME/workspace/* /workspace 1>/dev/null
fi
Обратите внимание, что ваша блокировка должна находиться в / z / deep / location, поэтому это всегда будет последний синхронизируемый файл, чтобы предотвратить потерю данных.
Я также включил параметры nice и ionice, поэтому начальное зеркалирование имеет высокий приоритет, а зеркалирование из ОЗУ на диск - более низкий приоритет.
Если вы смелы, используйте -c1 -n7 для начального зеркалирования в реальном времени, а если вы ожидаете частого простоя, вы можете использовать ionice с -c3 и без флага -n для зеркалирования только тогда, когда диск не используется.
Я сохраняю этот сценарий в / usr / bin / Mirror и запускаю его каждые пять минут с помощью cron.
crontab -e
*/5 * * * * /usr/bin/Mirror
Это особенно полезно, если вы хотите хранить свои рабочие файлы на зашифрованном жестком диске, но работать с ними в ОЗУ.
Если вы хотите запускать зеркало при запуске и выключении системы, вы, вероятно, можете использовать / etc / inittab
id0:26:once:/usr/bin/Mirror
Создайте какой-то семенной файл глубоко в вашем каталоге, отличном от tmpfs, и только rsync обратно в не-tmpfs, если он существует (что означает, что «загрузочная» копия сработала), например:
ЗАГРУЗКА
mount /path/tmpfs
rsync -aq --delete /path/non-tmpfs/ /path/tmpfs/
CRON
if [ -f /path/tmpfs/some/deep/location/filesgood.txt ]; then
rsync -aq --delete /path/tmpfs/ /path/non-tmpfs/
fi
Это не идеально, но, если вы улучшите это (путем поиска 5 файлов cookie во время cron, если вы хотите, например, в разных каталогах), это должно быть довольно безопасно.