Используйте rsync для копирования только скрытых файлов

Я хочу создать резервную копию всех скрытых файлов и каталогов в моем домашнем каталоге с помощью 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.


person Sophie Gage    schedule 30.03.2009    source источник
comment
Почему --exclude='.' --exclude='..' не работает?   -  person Brent Bradburn    schedule 26.04.2019


Ответы (3)


Обычный шаблон для сопоставления скрытых элементов: .[^.]*

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

Это копирует все файлы, начинающиеся с одной точки. Обратите внимание, что он не включает файлы, начинающиеся с более чем одной точки.

person sth    schedule 30.03.2009
comment
Очень полезно. Я также могу использовать rsync -a source/[^.]* dest/ для синхронизации всех не скрытых файлов, за исключением таких записей, как .git. - person Sophia Feng; 17.10.2014

Обычно это ".??*", чтобы убедиться, что вы не копируете "." и ".."

(Что, если бы у вас был файл, который был бы просто «.a»?)

person Martin Beckett    schedule 30.03.2009
comment
Эй, Мартин, я не понимаю, почему ./.? соответствует ./... Я прочитал документ здесь tldp.org/LDP/GNU-Linux -Tools-Summary/html/x11655.htm и там написано, что ? заменяет a-z,0-9, так почему же он совпадает с .? Протестируйте с: for f in ./.?; do echo $f; done - person Samuel Phan; 11.07.2020

Вы пробовали такие воплощения, как ./.*?

Не могли бы вы скопировать скрытые файлы во временный каталог, создать резервную копию временного каталога, а затем удалить его?

person Tom Ritter    schedule 30.03.2009