linux - rsync 使用包含选项仅复制某些类型的文件

标签 linux bash shell rsync

我使用以下 bash 脚本仅复制具有特定扩展名的文件(在本例中为 *.sh),但它仍会复制所有文件。怎么了?

from=$1
to=$2

rsync -zarv  --include="*.sh" $from $to

最佳答案

我认为 --include用于包含被 --exclude 排除的文件子集,而不是只包括那些文件。 换句话说:您必须考虑 include 的含义不排除

试试吧:

rsync -zarv  --include "*/" --exclude="*" --include="*.sh" "$from" "$to"

对于rsync 3.0.6或更高版本,需要修改顺序如下(见注释):

rsync -zarv --include="*/" --include="*.sh" --exclude="*" "$from" "$to"

添加 -m flag 将避免在目标中创建空目录结构。在 3.1.2 版本中测试。

所以如果我们只想要 *.sh 文件,我们必须排除所有文件 --exclude="*" , 包括所有目录 --include="*/"并包含所有 *.sh 文件 --include="*.sh" .

您可以在man page包含/排除模式规则部分找到一些很好的示例。

关于linux - rsync 使用包含选项仅复制某些类型的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11111562/

相关文章:

linux - 传输中的 Rsync 裁剪符号链接(symbolic link)

linux - 我想在 linux 上删除多行文本

linux - 从 cron.daily 分离 Linux 脚本

regex - Linux命令行从文本中提取名称

excel - 在 VBA 中执行脚本后退出 Cmd 窗口

linux - 如何使用静态链接构建 git?

linux - 如何在脚本中一次获取一个单词并在Linux中添加不同的命令

通过 bash 在 python 中使用 PHP

bash - 在根脚本ubuntu上获取当前用户

linux - 在 Debian 服务器上通过 ssh 连接到 Git 用户时没有(自定义)答案