问题
下面压缩指令如何修改能跳过docker_data/目录下的文件夹dst:
tar -cvzf docker_data.tar docker_data/要跳过 docker_data/ 目录下的 dst 文件夹,可以使用以下几种方法:
方法1:使用 --exclude 参数(推荐)
tar -cvzf docker_data.tar --exclude='docker_data/dst' docker_data/或者更精确的排除模式:
tar -cvzf docker_data.tar --exclude='docker_data/dst/*' docker_data/方法2:使用 --exclude-from 文件
如果有很多需要排除的目录,可以创建一个排除文件:
# 创建排除文件
echo "docker_data/dst" > exclude_list.txt
# 使用排除文件
tar -cvzf docker_data.tar --exclude-from=exclude_list.txt docker_data/方法3:使用通配符排除
tar -cvzf docker_data.tar --exclude='dst' docker_data/方法4:使用 find 命令配合 tar
find docker_data/ -type f ! -path "docker_data/dst/*" -print0 | tar -cvzf docker_data.tar --null -T -验证排除效果
在压缩前可以先测试哪些文件会被包含:
# 测试模式,不实际创建压缩包
tar -cvzf docker_data.tar --exclude='docker_data/dst' docker_data/ --list或者使用详细模式查看被跳过的文件:
tar -cvzf docker_data.tar --exclude='docker_data/dst' --verbose docker_data/排除多个目录
如果需要排除多个目录:
tar -cvzf docker_data.tar \
--exclude='docker_data/dst' \
--exclude='docker_data/temp' \
--exclude='docker_data/logs' \
docker_data/注意事项
路径匹配:排除模式是相对于当前工作目录的,所以使用
docker_data/dst而不是./docker_data/dst通配符使用:如果
dst可能在多个地方出现,使用更精确的路径避免误排除权限问题:确保对要压缩的文件有读取权限
推荐使用方法1,因为它简单直接且易于理解:
tar -cvzf docker_data.tar --exclude='docker_data/dst' docker_data/这样就会创建一个不包含 docker_data/dst 目录的压缩包。