rsync создает целевой каталог со старой датой
У меня есть скрипт, который автоматизирует резервное копирование - почасовые снимки моей рабочей станции xubuntu 12.04LTS. Он создает каталог с именем в соответствии с датой и временем, то есть: 20140316-1033, представляющий 10:33 сегодня утром 16 марта. Резервное копирование работает безупречно, жесткие ссылки работают как надо.
Это изменилось два дня назад. Я запускал его вручную - время от времени, и, наконец, я решил, чтобы cron автоматизировал задачу, выполняя ее один раз в час. Я изменил многословность скрипта, пару настроек того, что копировалось с каждой резервной копией. Итак, я, очевидно, что-то изменил, и я не могу понять, что я сделал.
Когда я проверяю дату создания целевого каталога, это всегда 14 марта 2014 года в 11:23. До тех пор, пока я не начал возиться, все работало правильно. С тех пор даты создания статичны.
Из-за этого мне пришлось изменить сценарий, чтобы он использовал имена каталогов, а не даты создания каталогов, чтобы определить самый последний снимок для снимка.
Все, что вы можете указать мне, будет с благодарностью. Заранее спасибо.
SOURCE="/"
NOW=$(date +"%Y%m%d-%H%M")
BASE="/media/backup-internal/furgesson"
PREVIOUS=$(ls -r $BASE | head -1)
if [[ "$NOW" != "$PREVIOUS" ]];
then
TARGET="$BASE/$NOW"
LINK="$BASE/$PREVIOUS"
OPTIONS="-avH --delete --link-dest=$LINK"
rsync $OPTIONS --include-from '/home/carolyn/BackupScripts/include-list.txt' --exclude-from '/home/carolyn/BackupScripts/exclude-list.txt' $SOURCE $TARGET
fi
И вот как выглядит список каталогов...
total 124
drwxr-xr-x 25 root root 4096 Mar 7 04:04 20140314-0445
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0512
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0515
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0821
drwxr-xr-x 25 root root 4096 Mar 14 04:48 20140314-0822
drwxr-xr-x 23 root root 4096 Mar 14 09:38 20140314-1013
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-1140
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-1314
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2059
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2128
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2141
drwxr-xr-x 23 root root 4096 Mar 14 11:23 20140314-2144
drwxr-xr-x 3 root root 4096 Mar 14 11:23 20140315-0846
drwxr-xr-x 3 root root 4096 Mar 14 11:23 20140315-0848
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-0849
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-0856
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1125
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1135
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1138
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1405
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1409
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1433
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1533
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1633
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1733
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1833
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140315-1933
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140316-0733
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140316-0833
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140316-0933
drwxr-xr-x 4 root root 4096 Mar 14 11:23 20140316-1033
1 ответ
Несколько небольших проблем:
Вы никогда не должны анализировать
ls
, Тем не менее, в этом случае вы, кажется, имеете полный контроль над именами файлов в вашей целевой директории, поэтомуls
может быть вариант. Тем не менее, я рекомендую вам использоватьls -tr
так сортируйте по времени, а не по алфавиту:PREVIOUS=$(ls -tr $BASE | head -n 1)
Давайте посмотрим на ваш
rsync
опции.-a
равняется-rlptgoD
:-r, --recursive recurse into directories -l, --links copy symlinks as symlinks -o, --owner preserve owner (super-user only) -g, --group preserve group -t, --times preserve modification times
Проблема заключается в
-t
это сохраняет реальное время модификации исходных файлов, поэтому фактически не устанавливает дату модификации резервной копии во время создания резервной копии до времени последней модификации исходных файлов. замещать-a
с-rlog
(удаление-t
) чтобы установить время, которое вы ожидаете.