Добрый день.
Прошу прощения, но не нашла поиском решения проблемы.Дано:
FreeBSD 6.1-RELEASE-p2, rsync-2.6.8_2
Задача: делать инкрементальные бекапы.
Используемые статьи:
http://www.mikerubel.org/computers/rsync_snapshots
http://gja.space4me.com/things/Backups_With_Rsync.html
есть скрипт, делающий полные бекапы по расписанию, надо добавить туда фукцию инкрементальных бекапов.И делать это надо тем же rsync+bash.Ибо от них уже имеется полный бекап, то есть имеем эталон, относительно которого искать изменившиеся файлы.
в приведенных статьях предлагается делать это через "cp -al" (в линуксе) и "cd $path1 && find . -print | cpio -dplm $path2" (во фре).
но у меня такая конструкция не работает.
по логике вещей, cp -al создает иллюзию жесткой ссылки. rsync сначала считывает имеющиеся файлы и на основании этого составляет список изменившыхся (это у меня отрабатывается нормально, что не удивительно). А потом, перед записью, он должен отлинковать директорию (так как это была иллюзия, то она окажется пустой) и записать туда файлы, которые были изменены.
Так вот, у меня этого не происходит, то есть он просто *дописывает* новые файлы в папку. Получается ежедневно обновляемый полный бекап, а это несколько не то :)
что я делаю не так?
Вот вырезки из скрипта, которые должны выполнять инкрементальный бекап:
====
#!/usr/local/bin/bash
Source="/export/shares/"
Destination="/backup"
if [ -d $Destination/hourly.3 ] ; then \
rm -rf $Destination/hourly.3 ; \
fi;
if [ -d $Destination/hourly.2 ] ; then \
mv $Destination/hourly.2 $Destination/hourly.3 ;\
fi;
if [ -d $Destination/hourly.1 ] ; then \
mv $Destination/hourly.1 $Destination/hourly.2 ; \
fi;
if [ -d $Destination/hourly.0 ] ; then \
cd $Destination/hourly.0 && find . -print | cpio -dplm $Destination/hourly.1 ;\
fi;
rsync -av --update --delete $Source $Destination/hourly.0
==