Linux 压缩分卷办法
首先,正常来说 linux 上是没有压缩分卷这个说法的,但好在 linux 上的文件大多是以文本的形式存在,所以可以利用 split 命令对压缩文件进行分割,需要的时候再合并。可以使用管道一次过,也可以分开使用。
一、使用管道符
tar -zcf - ROOT | split -b 10m - ROOT.tar.gz_
二、分开使用
tar -zcf ROOT.tar.gz ROOT;
split -b 10m ROOT.tar.gz ROOT.tar.gz_
三、解压缩
cat ROOT.tar.gz_* > ROOT.tar.gz;
tar -zxf ROOT.tar.gz;
四、实际场景
因百度网盘免费版最大文件上传限制为 4G,故需要将备份文件按 3G/文件
进行分卷。
#!/bin/bash
# Backup the data
set -e;
cd /data;
date=$(date +%Y-%m-%d_%H-%M-%S);
split_size=3G
for x in $(ls|grep -v Backup); do
echo "Backing up $x";
# 开始备份
tar -cf "/data/Backup/$x-$date.tar" "$x";
# 对备份文件进行分卷,如要恢复文件,需要先使用以下命令合并 cat xxx.tar_* > xxx.tar
split -b ${split_size} -d "/data/Backup/$x-$date.tar" "/data/Backup/$x-$date.tar_"
# 删除原备份文件
rm -f "/data/Backup/$x-$date.tar"
echo "Backup of $x completed";
echo -e "\n";
done;
echo "Deleting old backups";
find /data/Backup -type f -name "*.tar*" -mtime +7 -exec rm -f {} \;
echo "Backup completed";