如何让 tar/cp 仅复制不以 .jar 结尾且仅在根目录和 /plugins 目录中的文件?
所以,我正在制作一个 Minecraft 服务器备份脚本。我希望拥有的选项之一是仅备份配置文件。这是场景:
- 里面有很多文件夹,里面有大量的数据。
- 配置文件主要使用以下扩展名,但有些可能使用不同的扩展名:
- .yml
- .json
- 。特性
- .loc
- .dat
- .ini
- 。文本文件
- 配置文件主要出现在/plugins文件夹中
- 根目录中有一些配置文件,但除 /plugins 之外的任何其他文件都没有
- 这两个目录中唯一的其他文件是 .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
---更多专业的东西----
# 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
我可以在必要时提供更多代码/解释。