是否有一个简单的shell命令/脚本支持排除某些文件/文件夹被存档?
我有一个目录需要使用子目录进行存档,该子目录包含许多我不需要备份的非常大的文件.
不完全解决方案:
该tar --exclude=PATTERN命令与给定模式匹配并排除这些文件,但我需要忽略特定文件和文件夹(完整文件路径),否则可能会排除有效文件.
我还可以使用find命令创建文件列表并排除我不想存档的文件并将列表传递给tar,但这仅适用于少量文件.我有成千上万.
我开始认为唯一的解决方案是创建一个文件,其中包含要排除的文件/文件夹列表,然后使用rsync --exclude-from=file将所有文件复制到tmp目录,然后使用tar来存档该目录.
谁能想到更好/更有效的解决方案?
编辑:cma的解决方案效果很好.最重要的是--exclude='./folder' 必须在tar命令的开头.完整命令(cd首先,所以备份是相对于该目录):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
Run Code Online (Sandbox Code Playgroud) 我目前有rsync运行良好.它将我的所有文件从一个目录复制到另一个目录.唯一的事情是它是物理复制文件.
我有很多大文件,我不想拥有所有文件的副本.我只想在新目录中创建一个符号链接,以便我可以在网页上提供数据.源目录有一些我不希望公众看到的脚本和文件.我正在将安全数据移动到Web根目录(目标).
我希望rsync做的是源目录中的任何新文件都会创建到目标的链接.这样我就不像我目前所做的那样耗尽我的硬盘空间.除了做符号链接方面之外,我的工作完美无缺.有没有办法让rsync跟踪并创建符号链接?
rsync -aP --exclude="file.sql" --exclude="*~" --exclude=".*" --exclude="*.sh" . ${destination}
Run Code Online (Sandbox Code Playgroud)