使用rsync仅复制隐藏文件

13

我想使用rsync备份我的主目录中所有的隐藏文件和目录,但不包括非隐藏的文件和目录。

例如,给定以下目录列表:

drwxr-xr-x   7 sophie  sophie  238 31 Mar 08:45 .
drwxr-xr-x  15 sophie  sophie  510 31 Mar 08:14 ..
-rw-r--r--   1 sophie  sophie    4 31 Mar 08:12 .foo
drwxr-xr-x   3 sophie  sophie  102 31 Mar 08:45 .hiddendir
drwxr-xr-x   4 sophie  sophie  136 31 Mar 08:13 VisibleDirectory
-rw-r--r--   1 sophie  sophie    9 31 Mar 08:13 VisibleFile

我想备份 .foo、.hiddendir 以及 .hiddendir 中的所有内容,无论它们是否为隐藏文件或目录。我不想备份 VisibleDirectory 或 VisibleFile。

我尝试了一些命令都备份了“.”,包括其中的VisibleFile和VisibleDirectory,但我无法找到排除它们的方法。请帮忙!

我使用的是Mac OS X 10.5.6(Leopard)和rsync版本2.6.9协议版本29。


为什么 --exclude='.' --exclude='..' 不起作用? - Brent Bradburn
3个回答

16

匹配隐藏项目的常见模式是 .[^.]*

rsync -a ~/.[^.]* /path/to/backup

这将复制所有以单个点开头的文件。请注意,它不包括以多个点开头的文件。


非常有用。我还可以使用 rsync -a source/[^.]* dest/ 来同步所有非隐藏文件,排除 .git 等条目。 - Sophia Feng

12

通常使用".??*"来确保不复制"."和".."这两个目录。

(如果你有一个文件只是".a"呢?)


嘿,马丁,我不明白为什么 ./.?./.. 匹配。我在这里阅读了文档 https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm,并且它说 ? 代替了 a-z,0-9,那么为什么会与 . 匹配呢?测试使用:for f in ./.?; do echo $f; done - Samuel Phan

0

你尝试过像./.*这样的化身吗?

你能把隐藏文件复制到一个临时目录中,备份该临时目录,然后将其删除吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接