在 Bash 4 中,我想创建一个tar.gz
带有排除文件夹的文件夹,虽然关于这个简单案例存在大量答案,但对我来说没有任何答案可行。
我想保留排除中提到的目录,也许我可以使用exclude-tag-under
?
- 我试过了:
tar --exclude="www/cache" --exclude="www/wp-cache" -vczf "/volume1/Backup/test/asdsdsd/backup104432/testeur_files_www_2023-12-12_10-36-13.tar.gz" --directory="/volume1/Backup/test/asdsdsd/" -- "www"
提取详细的 tar 结果,其中排除的目录和内容仍然存在:... www/Marques/marque-Peugeot-logo.webp www/Marques/marque-Volkswagen-logo.png.webp www/Marques/Thumbs.db www/cache/ www/cache/contact commercial PlanetVo.txt
答案1
如果您想保留每个语句顶部的目录,--exclude
则需要排除其内容。通配符将匹配所有文件 - 包括通常不显示的“点”文件。
这应该对你有用。(我把你的两条长路径拉到变量中,这样更容易阅读)
out='/volume1/Backup/test/asdsdsd/backup104432/testeur_files_www_2023-12-12_10-36-13.tar.gz'
dir='/volume1/Backup/test/asdsdsd'
tar -cvzf "$out" -C "$dir" --exclude='www/cache/*' --exclude='www/wp-cache/*' www