You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何脚本执行后,tbz压缩包未移入backups目录反而使其变为压缩文件?

问题原因与解决方法

错误1:tar命令的压缩参数使用错误

你在tar命令里直接写了bzip2,这是错误用法。tar的bzip2压缩需要通过选项指定,正确写法是用--bzip2(长选项)或者-j(短选项),否则bzip2会被当成要打包的文件/目录,导致tar行为异常。

正确的tar命令示例:

tar --create --verbose --bzip2 --file=$name $dir
# 或者更简洁的短选项写法
tar cvjf $name $dir

错误2:未提前创建目标目录~/backups

执行mv $name ~/backups时,如果~/backups目录不存在,mv不会自动创建目录,而是会把$name文件重命名为backups。循环执行后,最后一次mv会覆盖之前的backups文件,最终得到的是一个名为backups的归档文件,而非目录。

解决方法是在脚本开头先创建目标目录(-p参数确保目录不存在时创建,存在时不报错):

mkdir -p ~/backups

修正后的完整脚本

#!/bin/bash
# 提前创建备份目录
mkdir -p ~/backups

echo "Declare directories to backup"
read dir_list
for dir in $dir_list
do
    name="${dir}.tbz"
    # 修正后的tar命令
    tar cvjf $name $dir
    mv $name ~/backups
done

内容的提问来源于stack exchange,提问作者WDUK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:32:25