备份压缩
tar_backup.sh
将指定目录压缩备份到指定目录下并自动轮转保留最近5次备份
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #!/bin/bash
if [ "$#" -lt 2 ]; then script_name=$(basename "$0") echo "Usage: ${script_name} <需要备份的路径> <备份到的路径> [--exclude <需要排除的路径> ...]" exit 1 fi
src_path=$1 dst_path=$2 shift 2 tar_params=$@
if [ ! -d "${dst_path}" ]; then mkdir -p ${dst_path} fi
for file in $(find ${dst_path} -name "backup-*" -type f | sort -r | tail -n +5 ); do rm -f $file; done;
if [ "${dst_path: -1}" != "/" ]; then dst_path="${dst_path}/" fi
tar cJf ${dst_path}/backup-$(date "+%Y%m%d-%H%M%S-%N").tar.xz ${tar_params} ${src_path} 2>&-
|
解压还原
解压到当前路径
1
| tar -xvf backup-20240617-235910-016764400.tar.xz
|
解压到指定路径
1
| tar -xvf backup-20240617-235910-016764400.tar.xz -C /path/to/destination
|
对于使用绝对路径的备份,解压到原路径
1
| tar -xvf backup-20240617-235910-016764400.tar.xz -C /
|