Linux中使用tar命令打包并按指定日期格式命名文件
Linux中使用tar命令打包并按指定日期格式命名文件
- tar命令语法
- tar常用格式选项:
- Date命令语法
- Date常用格式化选项:
- 结合tar和date命令实现指定日期格式命名
tar命令语法
tar 命令的基本语法如下:
tar [选项] [归档文件名] [要归档的文件或目录]
tar常用格式选项:
-c:创建新的归档文件;
-v:显示详细信息;
-f:指定归档文件名;
-z:使用 gzip 压缩归档文件;
-j:使用 bzip2 压缩归档文件;
–exclude=PATTERN:排除符合指定模式的文件
Date命令语法
通过 +%FORMAT 选项,可以自定义日期和时间的输出格式
Date常用格式化选项:
%Y:年(如 2025);
%m:月(01-12);
%d:日(01-31);
%H:小时(00-23);
%M:分钟(00-59);
%S:秒(00-59);
%F: YYYY-MM-DD
以 YYYYMMDD 格式输出当前日期:
# 方式一:
date +%Y-%m-%d# 方式二:
date +%F
输出示例:2025-02-14
结合tar和date命令实现指定日期格式命名
#!/bin/bash# 定义源目录路径
source_path="/var/test/bak"# 定义目标目录路径
destination_path="/opt/bak_data"# 获取当前日期,并将其格式化为 YYYY-MM-DD 格式
# %F等同于 %Y-%m-%d
date=$(date +%F)# 定义要排除的文件类型
# 这里使用tmp *. 表示排除所有以 .tmp 结尾的文件
exclude_file_type="*.tmp"# 使用 tar 命令创建归档文件
# -z:使用 gzip 进行压缩
# -c:创建新的归档文件
# -f:指定归档文件的名称
# $(date +%F):生成当前日期,格式为 YYYY-MM-DD
# ${destination_path}/time_${date}.tar.gz:归档文件的完整路径和名称
# --exclude=$exclude_file_type:排除所有以 .tmp 结尾的文件
# ${source_path}:要归档的源目录
tar -zcf "${destination_path}/time_${date}.tar.gz" \
--exclude="$exclude_file_type" \
"$source_path"# 判断 tar 命令是否成功执行
# $? 获取上一条命令的退出状态码
if [ $? -eq 0 ]; thenecho "打包成功!归档文件已创建:${destination_path}/time_${date}.tar.gz"
elseecho "打包失败!请检查源目录或权限设置。"
fi
成功示例:
打包成功!归档文件已创建:/opt/bak_data/time_2025-04-23.tar.gz