首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有模式匹配的特定子目录的rsync

具有模式匹配的特定子目录的rsync
EN

Unix & Linux用户
提问于 2018-04-28 20:12:08
回答 1查看 4K关注 0票数 3

我试图使用rsync复制一组特定的子目录来备份它们。我的目录结构如下所示:

代码语言:javascript
复制
/path/to/data/foo1
/path/to/data/foo2
/path/to/data/bar1
/path/to/data/bar2

我只想复制'foo‘文件夹,忽略'bar’的文件夹。

我还想忽略这些文件夹中的任何.zip文件。

我在rsync中尝试了许多参数组合,但无法让它完全实现我想做的事情。

我可以按照我想使用的两个命令来完成传输:

代码语言:javascript
复制
rsync --dry-run -a --human-readable --stats --progress --exclude"*.zip" "/path/to/data/foo1" "/mnt/backup/drive/"
rsync --dry-run -a --human-readable --stats --progress --exclude"*.zip" "/path/to/data/foo2" "/mnt/backup/drive"

从其他地方阅读,我希望这样的东西能起作用。

代码语言:javascript
复制
rsync --dry-run -a --human-readable --stats --progress --include="data/foo*" --exclude="*.zip" --exclude="*" "/path/to/data" "/mnt/backup/drive"

但这似乎也能捕捉到“bar”文件夹。

包括和排除论点的顺序让我很困惑。正如需要在--包括参数中指定'data‘文件夹一样,我所期望的功能并不是这样。

我错过的明显的旗帜是什么!

谢谢你的意见。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-04-28 20:54:05

您可以以这种方式运行rsync:

代码语言:javascript
复制
rsync --dry-run -av --human-readable --stats --progress --exclude="*.zip" /path/to/data/foo* /path/to/copy/to/

也许您想用这样的方式缩短命令:

代码语言:javascript
复制
rsync  -avhn --stats --progress --exclude="*.zip" /path/to/data/foo* /path/to/copy/to/

引用人rsync

代码语言:javascript
复制
-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

-v, --verbose               increase verbosity

-h, --human-readable        output numbers in a human-readable format

-n, --dry-run               perform a trial run with no changes made

准备好后,运行不带-n的命令

还可以使用此参数保存日志文件:

代码语言:javascript
复制
--log-file=

因此,上面的rsync命令将变成:

代码语言:javascript
复制
rsync  -avhn --stats --progress --exclude="*.zip" --log-file=logfile.log /path/to/data/foo* /path/to/copy/to/

日志文件将写在运行命令的同一个目录中,如果需要将其保存在另一个位置,则必须使用绝对路径。例如:

代码语言:javascript
复制
--log-file=/path/to/logfile
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/440643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档