是否有一个简单的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) 我正在尝试编写一个简单的bash脚本,它将包含隐藏文件和文件夹的文件夹的全部内容复制到另一个文件夹中,但我想排除某些特定的文件夹.我怎么能实现这个目标?
我试图用来cp将所有文件从子文件夹复制到osx上zsh中的当前文件夹。我基本上想解决这些人想要解决的问题:
我要相反。当我复制文件时,.git不会与其他文件一起复制我的文件夹。
我尝试了以下无济于事:
cp -RLv fetch/* ./
cp -RL fetch/* ./
cp -Rv fetch/* ./
cp -R fetch/* ./
cp -rv fetch/* ./
cp -r fetch/* ./
cp fetch/* ./
Run Code Online (Sandbox Code Playgroud)
这可能吗?我没事使用mv太多,如果我不得不这样做。
我想在复制时排除两个目录。
例子:
$ ls /root/tmp
a b c d e f
Run Code Online (Sandbox Code Playgroud)
我想排除目录a和b:
$ cp -rp /root/tmp/ /root/tmp1/
Run Code Online (Sandbox Code Playgroud)