Обычный метод (пишу по памяти):
NEWBACKUP=`date +%s` # or some other format
cp -al "$OLDBACKUP" "$NEWBACKUP"
rsync -aH --delete "$SOURCE" "$NEWBACKUP"
Посмотрите Easy Automated Snapshot-Style Backups with Linux and Rsync
Существует также --link-dest
опция rsync, которую я никогда не исследовал должным образом.
За счет некоторых дополнительных операций с файловой системой поиск ограничивается простыми файлами. Это исключит каталог exclude
, потому что это не файл :
find. \( -name '*.c' -o -name '*.h' -o -path '*/exclude' -prune \) -type f
find. -name excludeme -prune -o \
\( -name '*.c' -o -name '*.h' \) -print
Помните, что И(неявный )имеет приоритет над ИЛИ(-o
). (см. также-name '*.[ch]'
)
Эта команда возвращает то, что вы просите:
find. \( -name '*.c' -o -name '*.h' \) -a \! \( -path './exclude/*' \)
Самое простое изменение — заменить-prune
(больше не искать в этом каталоге )на-prune -false
(больше не искать в этом каталоге, и это не соответствует ).