Shell 命令来 tar 目录(不包括某些文件夹)

Shell 命令来 tar 目录(不包括某些文件夹)

在 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

相关内容