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 ответ

Несколько небольших проблем:

  1. Вы никогда не должны анализироватьls, Тем не менее, в этом случае вы, кажется, имеете полный контроль над именами файлов в вашей целевой директории, поэтому ls может быть вариант. Тем не менее, я рекомендую вам использовать ls -tr так сортируйте по времени, а не по алфавиту:

    PREVIOUS=$(ls -tr $BASE | head -n 1)
    
  2. Давайте посмотрим на ваш 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) чтобы установить время, которое вы ожидаете.

Другие вопросы по тегам