The*_*ist 6 tar backup debian upgrade
很久以前写过一个备份脚本,用到了tar手册的这部分:
您可以提供多个“--exclude”选项。
--exclude-from=file
-X file导致 tar 忽略与文件中列出的模式匹配的文件。
我的 tar 命令如下:
includesFile=include.txt
excludesFile=exclude.txt
tar zcpf - . -T ${includesFile} -X ${excludesFile} | openssl des3 -salt | dd of=out.bak
Run Code Online (Sandbox Code Playgroud)
这是include.txt:
/etc/
/var/
/usr/
/data/
/opt/
/root
Run Code Online (Sandbox Code Playgroud)
这是 exclude.txt
/data/webapp/webapp-data/*
/var/cache/*
/var/lib/dpkg/*
/usr/bin/*
/usr/share/locale/*
Run Code Online (Sandbox Code Playgroud)
它曾经工作得很好。最近我注意到存档的大小显着增加,通过切换到详细tar让我看到它包含了webapp-data巨大的目录。出于某种原因,它不再被排除在外。
我做的最后一件事是从Debian Jessie升级到Debian Stretch。版本变化很小,不知道是不是这个原因。
我尝试更改/data/webapp/webapp-data/*为/data/webapp/webapp-data/**,但这没有帮助。
为什么排除列表不再起作用?
小智 5
从 Debian Jessie 升级到 Stretch 后,我遇到了与 tar 排除相同的问题,我通过将命令行参数顺序
从以下更改为
:
tar cvzpf backup.tar.gz /DirToBackup1 /DirToBackup2 --exclude-from=/path/to/backup_exclude.txt
到:
tar cvzpf backup.tar.gz --exclude-from=/path/to/backup_exclude.txt /DirToBackup1 /DirToBackup2
我的 backup_exclude.txt 看起来像这样
/var/log/*
/cache/*
/.cache/*
(参考https://www.gnu.org/software/tar/manual/html_section/tar_49.html页面末尾 )
我(终于)找到了问题并能够解决它。它是多种事物的组合,包括excludes作为通配符给出的事物(在提出问题之前我没有这样做......现在它不再起作用了)。这是有效的命令:
includesFile=include.txt
excludesFile=exclude.txt
tar -zcpf - --absolute-names -X ${excludesFile} -T ${includesFile} | openssl des3 -salt | dd of=out.bak
Run Code Online (Sandbox Code Playgroud)
当然,排除项以这种形式给出:
/var/cache/*
/var/lib/dpkg/*
/usr/bin/*
/usr/share/locale/*
/proc/*
/sys/*
Run Code Online (Sandbox Code Playgroud)
并包括:
/etc/
/var/
/usr/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1400 次 |
| 最近记录: |