Как получить tar / cp для копирования только тех файлов, которые не заканчиваются на .jar и только в каталогах root и / plugins?
Итак, я делаю скрипт резервного копирования для сервера Minecraft.Один из вариантов, который я хотел бы иметь, - это резервное копирование только файлов конфигурации.Вот сценарий:
- Существует много папок с огромными объемами данных.
- Файлы конфигурации в основном используют следующие расширения, но некоторые могут использовать другое:
- .yml
- .json
- .properties
- .loc
- .dat
- .ini
- .txt
- Файлы конфигурации в основном находятся в папке / plugins
- В корневом каталоге есть несколько файлов конфигурации, но ни в каких других, кроме / plugins * 1028, нет.*
- Единственными другими файлами в этих двух каталогах являются файлы .jar - в некоторой степени.Их не нужно резервировать.Так работает флаг подключаемых плагинов.
Код использует комбинацию tar
и cp
в зависимости от того, с какими флагами пользователь начал процесс.Процесс запускается командой, затем пути добавляются через объединенную переменную, такую как $paths = plugins world_nether mysql/hawk
, где аргументы могут добавляться по одному за раз.
Как можно выборочно создавать резервные копии этих файлов конфигурации с помощью tar
и cp
?Из-за особенностей процесса настройки нам не нужно иметь одинаковые флаги для добавления в обе команды - это могут быть отдельные аргументы для любой из команд.
Вот два фрагмента кода, о которых идет речь: Настройка путей:
# My first, unsuccessful attempt.
if $BKP_CFG; then
# Tell user they are backing up config
echo " +CONFIG $confType - NOT CURRENTLY WORKING"
# Main directory, and everything in plugin directory only
# Jars are not allowed to be backed up
#paths="$paths --no-recursion * --recursion plugins$suffix --exclude *.jar"
fi
--- Подробнее Pro Stuff ----
# Set commands
if $ARCHIVE; then
command="tar -cpv"
if $COMPRESSION; then
command=$command"z"
fi
# Paths starts with a space </protip>
command=$command"C $SERVER_PATH -f $BACKUP_PATH/$bkpName$paths"
prep=""
else
prep="mkdir $BACKUP_PATH/$bkpName"
# Make each path an absolute path. Currently, they are all relative
for path in $paths; do
path=$SERVER_PATH/$path
done
command="cp -av$paths $BACKUP_PATH/$bkpName"
fi
Я могу предоставить больше кода / объяснений, где это необходимо.